1 打开文件
打开文件open(),对于文件来说,Python解释器想要打开磁盘上的文件,需要通过调用操作系统,让操作系统把文件读入内存
|
|
win操作系统默认的额是gbk,encoding=”utf-8”,指定操作系统的编码和解码方式
2 操作文件
2.1 字符操作 r w a
可读
f.read()
是读全部的内容
f.read(n)
例如f.read(3) 读取的是前3个字符(Python3),在系统打开文件的时候,指针(光标默认是在0的位置)
当读取完全部的内容后,光标位置就到了最后的位置。
例如文件内容是:hello哈哈1234564789
输出结果是:
hello
哈哈1234564789
需要注意的是Python2读取的是字节。
f.readline() 读每一行的内容
|
|
结果是:
hello哈哈1234564789
123132
f.readlines() 读所有的行,返回值是列表(列表可以迭代)
结果是:
[‘hello哈哈1234564789\n’, ‘123132\n’, ‘4567\n’, ‘789\n’]
迭代显示多有的行:
结果是:
hello哈哈1234564789
123132
4567
789
但是这里有一个缺点,是在文件很大的时候,这个列表的所有的内容都会被读入内存中。文件很大的情况就造成内存占用过高。
这里有一种解决方案:
使用句柄(handle ):
一般说来,你可以把句柄想象成一个对文本信息的“封装”。
资料链接:http://biopython-cn.readthedocs.io/zh_CN/latest/cn/chr22.html
相比普通文本信息,使用句柄至少有两个好处:
对于以不同方式存储的信息,句柄提供了一个标准的处理方法。这些文本信息可能来自文件、内存中的一个字符串、命令行指令的输出或者来自于远程网站信息,但是句柄提供了一种通用的方式处理这些不同格式和来源的文本信息。
句柄可以依次读取文本信息,而不是一次读取所有信息。这点在处理超大文件时尤为有用,因为一次载入一个大文件可能会占去你所有的内存。
每次只执行一行,执行完的行会被Python内存回收
|
|
结果是:
hello哈哈1234564789
123132
4567
789
练习,在诗文中的第三行添加李白添加内容
可写
对文件读写前需要设置文件的句柄为读w,
f=open(“test3”,mode=”w”,encoding=”utf8”)
写文件在打开的时候进行句柄操作,文件一打开的时候就清空,但是中间的wirte在写的过程中,只要文件没有关闭,不会覆盖。
|
|
|
|
结果是:
中文
123
可读可写
2.2 字节操作 rb wb ab
3 关闭文件
Python打印进度条
结果:
100%####################################################################################################