- open()函数用法:
file-object = open(file_name, access_mode = ' ', buffering = -1)
filename可以是相对路径或绝对路径,access_mode可以为r, w, a分别代表读,写,追加,U则表示通用换行符支持。r和U模式下,打开的文件必须存在,w模式下打开的文件若存在则首先被清空,然后重新写入。a则是追加到文件尾部。如果文件不存在,则自动创建。
buffering表示缓冲方法,0为不缓冲,1为缓冲一行,大于1则表示缓冲特定大小,不给定或-1时,则表示采用默认缓冲机制。
- 文件内建方法
- read(N):直接读取N个字节到字符串中
- readline():读取文件的一行,包括行结束符然后作为字符串返回。
- readlines():读取所有(剩余的)行然后把它们作为一个字符串列表返回。
- xreadlines()不是一次性读取所有行,而是每次读取一块,用在for循环中可以减少对内存的占用。使用迭代器也一样可以实现。
- write():功能和read()相反。
- writelines():针对列表,他接受一个字符串列表作为参数,将他们写入文件。行结束符不会被自动写入。
- seek()和tell()
seek(offset)方法可以在文件中移动文件指针到不同的位置,offset字节代表相对某个位置的偏移量,默认为0,1表示从当前位置算起,2表示从文件末尾算起。tell()则可以显示指针在文件中的位置。
- 标准文件
sys模块通过sys.argv属性提供了对命令行参数的访问,sys.argv[0]永远是程序的名称,len(sys.argv)是命令行参数的个数。
文件对象方法 |
操作 |
file.close( ) |
关闭文件 |
file.fileno( ) |
返回文件操作符(FD整型) |
file.flush( ) |
刷新文件内部缓冲区 |
file.isatty( ) |
判断file是否问一个类tty设备 |
file.next( ) |
返回文件下一行(类readline) |
file.read(size = -1) |
从文件读取size个字节,当未给定size或为负时,读取剩余所有字节,然后作为字符串返回 |
- 从文件读取的数据回到脚本时是一个字符串,当把数据写入文件时,python不会自动将对象转换为字符串,你必须传递一个已经格式化的字符串。
- 正常python打开文件都是使用open函数,但是当中途出现异常时,文件时无法正常关闭的,可能引发不可知的错误,同时可避免忘记结尾close的情况。
因此推荐使用with函数来打开文件
>>> with open('workfile', 'r') as f: ... read_data = f.read() >>> f.closed True
使用迭代器打开文件,十分快速和节省内存。
f = open(filename , 'r')
for eachline in f:
print eachline
f.close()