8

我想打开一个文件并使用 and 读取每一f.seek()f.tell()

测试.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

它读取整个文件。

4

4 回答 4

20

好的,你可以使用这个:

f = open( ... )

f.seek(last_pos)

line = f.readline()  # no 's' at the end of `readline()`

last_pos = f.tell()

f.close()

请记住,last_pos不是文件中的行号,它是文件开头的字节偏移量——增加/减少它没有意义。

于 2013-03-24T03:39:41.047 回答
3

有什么理由必须使用 f.tell 和 f.seek 吗?Python 中的文件对象是可迭代的——这意味着您可以原生地遍历文件的行,而不必担心其他很多问题:

with open('test.txt','r') as file:
    for line in file:
        #work with line
于 2013-03-24T03:29:23.337 回答
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)
于 2018-02-07T08:34:55.537 回答
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 之后的一行开始迭代。

于 2018-06-07T14:10:05.817 回答