打开文件
语法如下:open(name,[module[,buffering]]) ,模式 和缓冲参数都是可选的
f = open(r‘C:\TEXT\somefile.txt‘)
#如果文件不存在
Traceback (most recent call last):
File "<pyshell#64>", line 1, in <module>
f = open(r‘C:\TEXT\somefile.txt‘)
IOError: [Errno 2] No such file or directory: ‘C:\\TEXT\\somefile.txt‘
module 参数常用值
‘r‘ | 读模式 |
‘w‘ | 写模式 |
‘a‘ | 追加模式 |
‘b‘ | 二进制模式(可添加到其他模式中使用) |
‘+‘ | 读/写模式(可添加到其他模式中使用) |
缓冲
open 函数的第3个参数(可选)控制着文件的缓冲。
0 : 无缓冲,所有读写操作直接针对硬盘
1 : 有缓冲,用内存替代硬盘、
基本文件方法
读和写 :文件(或流)最重要的方法就是提供或者接受数据。
>>> f = open(r‘D:\a.txt‘,‘w‘) >>> f.write(‘hello‘) >>> f.write(‘world‘) >>> f.close()
>>> f = open(r‘D:\a.txt‘,‘r‘) # ‘r‘ 可以省略 >>> f.read(4) ‘hell‘ >>> f.read() ‘oworld‘
读写行
file.readline([n]) -从当前位置开始,直到一个换行符的出现(或者读取最多 N个字符 字符)
file.readlines() --读取一个文件的所有行
writelines() --给他一个字符串列表(可迭代的对象),他会把所有字符串写入文件,需要自己添加新行
关闭文件
close() --关闭文件
可以使用 try finally 中使用 close()
也可以使用
with oepn(sdfsadfasdf) as f:
使用文件的基本方法
read([n]),readline([n]),readlines(),write(),writelines() --不做详细的解释了
对文件内容进行迭代
按字节进行处理
f = open(filename)
while char:
char = f.read(1)
if not char:break
process(char) # 处理字符串
f.close()
按行操作
f = open(filename) while char: line= f.readline() if not line:break process(char) # 处理行 f.close()
读取所有内容
如果文件不够太大,则可以用 read() 或者readlines()
使用fileinput 实现懒惰迭代
如果文件足够大,则不能用readlines,则适合用 for 循环 和 readline() 方法,也可以使用fileinput
import fileinput for line in fileinput.input(filename): process(line) #对行进行处理
文件迭代器
在python近几个版本中,文件对象是可迭代的,这就意味着可以直接在for 循环中使用它们,从而对它们进行迭代
f = open(filename) for line in f: process(line) f.close()
ps:sys.stdin 注意该用法!
原文:http://www.cnblogs.com/z-wii/p/6631607.html