我有一个很大的 .txt 文件。每个条目都在一个新行上。我正在尝试访问该文件并遍历每一行以获取条目。但是,当我使用 时linecache.getline('file_path', 1)
,我得到一个空字符串。Python docs中的哪个是linecache
返回错误的方式。有文件大小限制吗?我正在尝试读取一个 1.2GB 的文件。我也相当确定linecache
在获取行号之前仍在尝试将整个文件读入内存。RAM 使用率上升大约文件的大小,然后恢复正常。有什么我做错了linecache
吗?除此以外还有什么建议linecache
吗?
问问题
159 次
2 回答
0
您需要做的就是使用文件对象作为迭代器。
for line in open("log.txt"):
do_something_with(line)
更好的是在 Python 版本中使用上下文管理器。
with open("log.txt") as fileobject:
for line in fileobject:
do_something_with(line)
这也会自动关闭文件。
于 2020-06-18T17:08:06.080 回答
0
如果您只是想逐行读取文件,而不将其加载到内存中,pythonopen
会为此提供自己的生成器。
with open("filename", "r") as file:
for line in file:
# Do stuff
只要你在那个for
循环中做你必须做的事情,你就不必担心内存。
于 2020-06-18T17:04:07.887 回答