漫步人生路之Python旅途(七)
2019-01-15 07:05:39来源:博客园 阅读 ()
文件操作
1.打开文件
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
参数1(file):文件的路径.
参数2(mode):打开文件的模式,默认只读
参数3(buffering):文件的缓冲策略
参数4(encoding):文件解码方式(必须是在字符串模式)
参数5(errors):当编码错误时的提示信息(只能在文本模式)
参数6(newline):控制换行方式,在行的末尾是None, '', '\n', '\r', and '\r\n'
参数7(closefd):如果closefd为False,底层文件描述符将保持打开状态
当文件关闭时或者给定文件名时,此方法无效.在这种情况下必须是真的。
mode="r":以只读的方式打开文件.如果文件不存在会报错.
file_open = open("test1.txt",mode="rb") print(file_open.read()) file_open.close() # 打印内容如下: FileNotFoundError: [Errno 2] No such file or directory: 'test1.txt'
下面是文件读取的操作:
test.txt文件内容如下:
readline(limit:int):如果不写参数默认读取一整行,如果填写参数将限制读取的字符个数.返回一个str
file_open = open("test.txt",mode="r",encoding="utf-8") print(file_open.readline()) # 不写参数读一整行 file_open.close() # 打印内容如下 上海滩
file_open = open("test.txt",mode="r",encoding="utf-8") print(file_open.readline(2)) # 写参数2读取两个字符 file_open.close() # 打印内容如下: 上海
readlines(hint:int):不写参数默认读取所有内容,返回一个列表,如果指定参数,(经个人测试如果参数的int值不超过文件一行的内容,将显示1行,如果参数的int值超过一行的内容,将显示一二两行,如果参数的int值大于两行的内容将显示三行,以此类推.
下面是不带参数的事例:
file_open = open("test.txt",mode="r",encoding="utf-8") print(file_open.readlines()) file_open.close() # 打印内容如下: ['上海滩\n', '射雕英雄传\n', '侠客行']
下面是带参数的事例:
file_open = open("test.txt",mode="r",encoding="utf-8") print(file_open.readlines(3)) # 参数设置3 file_open.close() # 打印内容如下: ['上海滩\n'] # 参数3没有超过第一行文件的个数所以只显示一行 file_open = open("test.txt",mode="r",encoding="utf-8") print(file_open.readlines(4)) # 参数设置4 file_open.close() # 打印内容如下: ['上海滩\n', '射雕英雄传\n'] # 参数4超过了一行内容,所以显示两行.
read(int):不写参数默认读取所有文件内容,
file_open = open("test.txt",mode="r",encoding="utf-8") print(file_open.read()) # 不写参数的read() file_open.close() # 打印内容如下: 上海滩 射雕英雄传 侠客行 file_open = open("test.txt",mode="r",encoding="utf-8") print(file_open.read(3)) #带参数的read(3) file_open.close() # 打印内容如下: 上海滩 # 打印三个字符
如果打开文件的模式是文本模式读取三个字符
file_open = open("test.txt",mode="rb") print(file_open.read(3)) # 带参数的read(3) file_open.close() # 打印内容如下: b'\xe4\xb8\x8a' # 打印三个字节
如果打开文件的模式是字节码的方式,将打印三个字节
文件的写入操作(覆盖写) mode="w"
file_write = open("test_1.txt",mode="w",encoding="utf-8") file_write.write("我是写入的") # file_write.close()
效果如下:
mode = "w"模式是覆盖写的操作,如果文件存在将删除原文件,新建一个同名的文件后在执行写的操作.如果原文件不存在执行新建的操作.
文件的追加操作:mode="a"
file_append = open("test.txt",mode="a",encoding="utf-8")
file_append.write("我是追加的")
file_append.close()
查看文件如下:
文件操作的几种模式:
r 只读
a 追加,文件的末尾写
w 覆盖写,先清空文件,后写入文件
rb ,wb ab是以字节的方式操作文件.所以不需要加encoding对字节进行编码的操作
a+ 追加 + 读 注意 不管怎么读都读不到内容,除非移动光标
w+ 覆盖写 + 读 注意:先写后读 先读后写 除非移动光标
r+ 读 + 写 注意: 先读后写
其它操作:
seek():移动光标(移动光标是按字节移动,不是按字符移动)
seek(0,0):移动光标到文件开头
seek(0,1):移动光标到当前位置
seek(0,2):移动光标到文件末尾
tell():查看光标当前位置(是字节码)
truncate():截断光标以后所有数据,只保留光标前面的数据
文件的删除,重命名操作:
重命名:rename(源文件名,从命名后的文件名)
import os
os.rename("test.txt","test1.txt")
删除:remove(文件名)
import os
os.remove("test1.txt")
路径:
文件的路径分为相对路径和绝对路径
相对路径:相对于当前目录下进行文件查找,(./是当前目录, ../是上一层目录)
绝对路径:是从文件的根目录开始一层一层的进行查找.Python中使用绝对路径,例如:
G:\feiq\Recv Files\test.txt
因为"\"在字符串中有特殊意义,所以文件路径中的"\"不能被识别,下面是两种识别绝对路径的方法.
第一种在路径前面加上r来
file_read = open(r"G:\feiq\Recv Files\test.txt",mode="r",encoding="utf-8")
第二种是使用"\\"用转移符的方式
file_read = open("G:\\feiq\\Recv Files\\test.txt",mode="r",encoding="utf-8")
关于open(...)打开文件后,必须要有个close()来关闭文件句柄.否则会造成内存泄漏.
可以使用另一种操作文件的方式,下面是两种方式的事例
with open(r"test.txt",mode="r",encoding="utf-8") as file_read:
file_read.read()
file_read = open("test.txt",mode="r",encoding="utf-8")
file_read.read()
file_read.close() # 使用文件句柄后要关闭文件句柄
原文链接:https://www.cnblogs.com/caesar-id/p/10266313.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:python 并发之线程
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash