怎样在Python中使用文件操作跳转到某一行?
我正在解析一个文件,需要记录我在文件中的位置……假设我有一个叫做 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
当作一个“魔法”钥匙,它能找到正确的行。