标签:
文件操作
打开文件
f = open(‘test2.txt‘,‘w‘) f.write(‘01234567890123456789‘) f.seek(5) f.write(‘hello, world!‘) f.close() f = open(‘test2.txt‘,‘r‘) line = f.read() print(line) f.close() 01234hello, world!89
truncate #截断数据,仅保留指定之前数据
f = open(‘test2.txt‘)
f.seek(4)
f.truncate() #截断f.seek(4)以后的所有数据,仅保留之前的。
f.close()
tell返回当前文件的位置
f = open(‘test2.txt‘) f.read(2) f.read(3) print(f.tell()) f.close()
5
#假设文件中包含中文
f = open(‘test2.txt‘,‘r‘,encoding=‘utf-8‘)
a = f.seek(2) #文件报错,因为一个汉字占3个字节,seek是按照字节位移
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xbd in position 0: invalid start byte
b = f.read(2) #读取字符,(在以前版本中一个汉字占3个字节,单读取2个字节将会出现乱码)
print(a)
c = f.tell() #返回值还是按照字节来的。
print(b)
好0
4
#Once your file here try: #Write data to your file finally: file.close()
迭代文件内容和文件对象
read(),readline(),readlines()前面都已经提到过,下面介绍另一种方法fileinput
在对一个比较大的文件进行迭代行的操作时,readlines()会占用大量的内存,既可以使用while循环和readline,还可以使用for循环来实现行的迭代。
import fileinput for line in fileinput.input(filename): #便于遍历多个输入流中的行。 print(line)
fileinput模块中的函数
input(files[,inplace[,backup]]) #便于遍历多个输入流中的行
filename() #返回当前文件的名称
lineno() #返回当前(累计)的行数
filelineno() #返回当前文件的行数
isfirst() #检查当前行是否是文件的第一行
isstding() #检查当前最后一行是否来自sys.stdin
nextfile() #关闭当前文件,移动到下一个文件
close() #关闭序列
文件迭代器
f = open(filename) for i in f: print(i) f.close()
可以对文件迭代器执行和普通迭代器相同的操作,比如将它们转换为字符串列表(list(open(filename))),这样所达到的效果和readlines一样。
f = open(‘log.txt‘,‘w‘) f.write(‘aaa\n‘) f.write(‘bbb\n‘) f.write(‘ccc\n‘) f.write(‘ddd\n‘) f.close() lines = list(open(‘log.txt‘)) print(lines) [‘aaa\n‘, ‘bbb\n‘, ‘ccc\n‘, ‘ddd\n‘]
标签:
原文地址:http://www.cnblogs.com/koka24/p/5137147.html