怎样在Python中使用文件操作跳转到某一行?

3 投票
2 回答
543 浏览
提问于 2025-04-15 19:56

我正在解析一个文件,需要记录我在文件中的位置……假设我有一个叫做 test.txt 的文件,我正在用一个循环不断读取文件中每一行写入的数据。如果发生崩溃,我会用文件的 tell() 方法在另一个文件中标记我的位置。请问有没有办法标记某一行,并且能够返回到那一行的位置,还是说我只能用 tell 方法来跟踪字节数呢?

#this is just example code, not the real thing
f = open('test.txt')
pos = open('pos.txt', 'w')
f.seek(pos)
while 1:
  readline(f)
  pos.write(f.tell())

更新:这些文件大约有 1GB 大小

2 个回答

1

记住一下 f.tell() 返回的内容(通常是字节数,但不一定),这样你就可以直接跳到文件中的正确位置。

如果你只记住了行数,那你就得从头开始重新读一遍文件,数一数看到的新行数。

2

你可能会更喜欢这个链接:http://docs.python.org/library/linecache.html

“如果程序崩溃,我会用文件的 tell() 方法在另一个文件中标记我的位置。”

很好。

“有没有办法标记某一行,并且能够返回到那个行的位置?”

你其实已经在做这个了。你用 tell 来标记那一行。tell 的值就是用来定位的,之后可以用 seek 来回到那个位置。

如果这样更好理解,可以想象你不知道单位是什么。可以把 tell 当作一个“魔法”钥匙,它能找到正确的行。

撰写回答