1

我有一个很大的 .txt 文件。每个条目都在一个新行上。我正在尝试访问该文件并遍历每一行以获取条目。但是,当我使用 时linecache.getline('file_path', 1),我得到一个空字符串。Python docs中的哪个是linecache返回错误的方式。有文件大小限制吗?我正在尝试读取一个 1.2GB 的文件。我也相当确定linecache在获取行号之前仍在尝试将整个文件读入内存。RAM 使用率上升大约文件的大小,然后恢复正常。有什么我做错了linecache吗?除此以外还有什么建议linecache吗?

4

2 回答 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 回答