我想打开一个文件并使用f.seek()
和f.tell()
读取每一行:
的test.txt:
abc
def
ghi
jkl
我的代码是:
f = open('test.txt', 'r')
last_pos = f.tell() # get to know the current position in the file
last_pos = last_pos + 1
f.seek(last_pos) # to change the current position in a file
text= f.readlines(last_pos)
print text
它读取整个文件。
答案 0 :(得分:17)
f = open( ... )
f.seek(last_pos)
line = f.readline() # no 's' at the end of `readline()`
last_pos = f.tell()
f.close()
请记住,last_pos
不是文件中的行号,它是从文件开头偏移的字节 - 递增/递减它没有意义。
答案 1 :(得分:3)
你有什么理由要使用f.tell和f.seek吗? Python中的文件对象是可迭代的 - 这意味着您可以本地循环遍历文件的行而不必担心其他内容:
with open('test.txt','r') as file:
for line in file:
#work with line
答案 2 :(得分:0)
获取当前位置的方法当您想要更改文件的特定行时:
cp = 0 # current position
with open("my_file") as infile:
while True:
ret = next(infile)
cp += ret.__len__()
if ret == string_value:
break
print(">> Current position: ", cp)
答案 3 :(得分:0)
使用islice跳过线条对我来说非常合适,看起来更接近您正在寻找的内容(跳转到文件中的特定行):
from itertools import islice
with open('test.txt','r') as f:
f = islice(f, last_pos, None)
for line in f:
#work with line
其中last_pos是您上次停止阅读的行。它将在last_pos之后开始迭代一行。