如何在Python中重新加载文件?
如果我有一个脚本,它会把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()
将文件移动到一个绝对位置时,会清空读取缓存。