python学习第十一章——资料和素材
python学习第十一章——文件和素材1.打开文件:open函数,它接受一个文件名作为唯一的强制参数。如果只提供一个
python学习第十一章——文件和素材
1.打开文件:open函数,它接受一个文件名作为唯一的强制参数。如果只提供一个参数的话,那么我们可以获得能获取文件内容的文件对象。如果要向文件内写入内容,则必须提供一个模式参数,open函数中的模式参数只有几个值,如下图:
其中b模式表示可以处理二进制文件,比如rb可以用来读取一个二进制文件。
open函数的第3个参数控制着文件的缓冲,如果参数是0或者是false,IO就是无缓冲的(所有的读写操作都直接针对硬盘);如果是1或者是true,IO就是有缓冲的(意味着python使用内存来代替硬盘,让程序更快,只有使用flush或者close时才会更新硬盘上的数据)。大于1的数字代表缓冲区的大小(单位是字节),-1或任何负数代表使用默认的缓冲区大小。
2.文件读和写:上面的open函数返回的是一个类文件对象,通过这个对象我们就可以写入(write)和读取(read)数据了。write(string)方法所提供的参数string会追加到文件中已存在部分的后面。read()方法可以提供读取字符数的参数。
seek(offset[,whence]):这个方法把当前位置(进行读和写的位置)移动到由offset定义的位置,例子如下:
tell()方法返回当前文件的位置,如:
3.readline读取单独的一行(从当前的位置开始知道一个换行符出现,也读取这个换行符)。不适用任何参数(这样,一行就被读取和返回)或者使用一个非负的整数作为readline可以读取的字符的最大值。readlines方法可以读取一个文件中的所有行并将其作为列表返回。writelines和readlines相反:传给它一个字符串的列表,它会把所有的字符串写入文件。没有writeline方法因为能使用write实现相关功能。
4.关闭文件:close方法,和java中一样,流的关闭最好是手动进行,所以这里最好是手动进行文件的关闭(最好在finally语句中确保文件被关闭了)。再python2.5中引入了with语句:with open("somenfile.txt") as somefile:do_something(somefile)。with语句可以打开文件并且将其赋值到变量上(这里是somefile),之后就可以将数据写入语句体中的文件。文件在语句结束后会被自动关闭,即使是由于异常引起的结束也是如此。在2.5之前的版本中,with语句只有在导入如下的模块后才可以用:from __future__ import with_statement。
5.在当文件比较小的时候可以使用read或readlines一次读取整个文件,但是当文件较大时,readlines会占用太多的内存,这个时候可以用while循环和readline方法来替代。这里还有一种更加方便的方法就是使用fileinput模块,fileinput模块包含了打开文件的函数,只需要传一个文件名给它。如:
6.迭代文件:在python中文件对象时可迭代的,如:
sys.stdin也是可迭代的,就像其他的文件对象,用法如上。