11.2 文件常用方法
打开文件
open(name[, mode[, buffering]])
name:文件名,此参数是必须的。
mode:打开文件的模式,此参数是可选的,默认打开的文件为读模式。
buffering:缓冲区。
如果参数为0(或False),I/O是无缓冲的。(所有的读写操作直接针对硬盘)
如果参数为1(或True),I/O是有缓冲的。(读写操作在内存中,程序更快,只有使用flush或close文件时才更新数据到硬盘上)
大于1的数字代表缓冲区的大小(单位是字节),-1(或其他任何负数)代表使用默认的缓冲区大小。
读文件
read():将文件中的内容当作一个整的字符串读出来
read(size):从当前位置开始,至多读取size字节的字符串
readline():读取一行
readlines():将文件中的所有行存到列表中
写文件
write(string):将一个字符串写到文件中
writelines(...):以字符串的列表为参数,把所有的字符串写入文件
关闭文件
close
补充:
(1)随机访问:
seek:读写位置移动到指定的位置
tell:返回当前文件的读写位置
(2)with语句自动关闭文件
with open("somefile.txt") as somefile:
do_something(somefile)
11.3 迭代文件内容
#11.3.1 按字节操作
#每次处理单个字符
f = open(filename)
char = f.read(1)
while char:
process(char)
char = f.read(1)
f.close()
#用while/True每次处理单个字符(更好)
f = open(filename)
while True:
char = f.read(1)
if not char: break
process(char)
f.close()
#11.3.2 按行操作
f = open(filename)
while True:
line = f.readline()
if not line:break
process(line)
f.close()
#11.3.3 读取所有内容
#(1)按字符处理
f = open(filename)
for char in f.read():
process(char)
f.close()
#(2)按行处理
f = open(filename)
for line in f.readlines():
process(line)
f.close()
#11.3.4 用fileinput惰性迭代
#为何称为惰性迭代?fileinput只读取实际需要的部分
import fileinput
for line in fileinput.input(filename):
process(line)
#11.3.5 文件迭代器
#从Python2.2开始,文件对象是可迭代的
#实例1:
for line in open(filename):
process(line)
#实例2:
import sys
for line in sys.stdin:
process(line)