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