概述
上篇接介绍了文件的基本读写功能,这里将介绍文件指针及相关函数。
文件指针
文件指针是打开文件时就具有的属性,指向文件的位置,每次读文件或者写文件都会从指针位置开始,每次读写都会导致指针偏移相应的字节数。
默认情况下打开文件指针都是指向文件开头,只有当打开模式是追加方式(a
a+
)时文件指针才指向文件结尾
相关函数和用法
查看文件指针的当前位置:def tell(self, offset, whence=None)
,offset表示偏移量,whence
表示指针位置,0-文件开头
,1-当前位置
,2-文件末尾
,默认返回相对的文件开头的偏移量。
设置文件指针的位置:def seek(self, offset, whence=None)
,offset
表示偏移量,whence
表示指针的位置。
文本:
1 2 3 4 |
HelloWorld HelloWordpress HelloWorld2 HelloWordpress2 |
代码:
1 2 3 4 5 6 7 8 9 10 11 |
fp = open("a.txt", "r+") print fp.read(11) # HelloWorld print fp.tell() # 12 print fp.read(15) # HelloWordpress print fp.tell() # 28 fp.seek(5, 1) # 从当前位置向后偏移五个字节 print fp.read(7) # word2 fp.seek(0, 0) # 设置文件指针到文件开始 print fp.read() # 打印所有文件内容 |
注意事项
读写文件时一定要注意文件指针的位置,如:
1 2 3 4 |
fp = open("a.txt", "r+") fp = read() fp = tell() # 56 fp.write("HelloWorld") # 这时候会报错,因为文件指针指向了文件最后,写入失败 |
此时如果要写文件,先要把文件指针提前:
1 2 |
fp.seek(-1, 1) fp.write("HelloWorld") # 无错误 |
相同的,先写文件再读文件也会出出错,但是不会报错:
1 2 3 4 5 6 7 8 9 |
fp = open("test.txt", "w+") w_data = "Hello" fp.write(w_data) print fp.tell() # 5 # 错误,这里会输出乱码 #print r.read() # 正确 fp.seek() print r.read() |
评论