如何在Python中重新加载文件?

2 投票
3 回答
6923 浏览
提问于 2025-04-16 01:18

如果我有一个脚本,它会把1000行内容写入一个文件,然后再对这个文件进行正则表达式的操作,但实际上只能看到最后写入的100行文本。有一种解决办法是关闭文件再重新打开。请问有没有办法在写入后重新加载文件,还是说我应该做一个写入-关闭-打开的模块?值得一提的是,第一次打开时这个日志文件是不存在的或者是空的。

>>> the_page = 'some large site opened through urllib'
>>> logfile = open('./artist/' + tags['ARTIST'], 'r+') 
>>> logfile.write(the_page)
>>> print logfile.read()

什么都没有显示。

>>> 'Some regular expressions search'

只搜索最后写入的100行。

>>> logfile.close()
>>> logfile = open('./artist/' + tags['ARTIST'], 'r+') 
>>> print logfile.read()

所有内容都显示出来了。

>>> 'Some regular expressions search'

表现正常。

3 个回答

-1

正如评论中提到的,这样做是不对的。使用seek(0)才是正确的方法。

这个问题的答案其实很明显,我不需要关闭文件或者其他什么操作,我只要重新打开它,它的表现就和重新加载一样。所以:

>>> the_page = 'some large site opened through urllib'
>>> logfile = open('./artist/' + tags['ARTIST'], 'r+') 
>>> logfile.write(the_page)
>>> logfile = open('./artist/' + tags['ARTIST'], 'r+') 
>>> print logfile.read()
0
logfile.flush()

这段代码的作用和打开然后关闭文件是一样的。

6

这只是我的一个猜测,但也许在写完文件后加上一个 logfile.seek(0) 会有帮助。文档中对这个问题有一个可能的解释,链接在这里:file.next

不过,使用 seek() 将文件移动到一个绝对位置时,会清空读取缓存。

撰写回答