为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不将其加载到内存的情况下逐行读取Python中的大型文本文件?

如何在不将其加载到内存的情况下逐行读取Python中的大型文本文件?

翻阅古今 2019-06-28 16:48:14
如何在不将其加载到内存的情况下逐行读取Python中的大型文本文件?我需要逐行读一个大文件。假设该文件的容量超过5GB,我需要读取每一行,但显然我不想使用readlines()因为它会在内存中创建一个非常大的列表。下面的代码将如何适用于这种情况?是xreadlines一个地读进记忆?需要生成器表达式吗?f = (line for line in open("log.txt").xreadlines())  # how much is loaded in memory?f.next()另外,我还能做些什么才能像linux那样,按相反的顺序读取这些内容呢?tail指挥部?我发现:http://code.google.com/p/pytailer/和"按文本文件行读取的Python头、尾和后读"两个人都干得很好!
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

我提供这个答案是因为基思虽然简洁,但没有关闭文件明示

with open("log.txt") as infile:
    for line in infile:
        do_something_with(line)


查看完整回答
反对 回复 2019-06-28
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

您所需要做的就是使用文件对象作为迭代器。

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)

这也将自动关闭文件。


查看完整回答
反对 回复 2019-06-28
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

一种古老的方法:

fh = open(file_name, 'rt')line = fh.readline()while line:
    # do stuff with line
    line = fh.readline()fh.close()


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 784 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信