【发布时间】:2014-06-19 16:50:46
【问题描述】:
我通常避免阅读这样的文件:
with open(file) as f:
list_of_lines = f.readlines()
并改用这种类型的代码。
f = open(file)
for line in file:
#do something
除非我只需要遍历文件中的几行(并且我知道那些行),否则它认为对 list_of_lines 进行切片更容易。现在这又回来咬我了。我有一个巨大的文件(不可能将其读入内存),但我不需要遍历所有行,只需其中几行。我已经完成了代码,可以找到我的第一行在哪里,然后找到我需要编辑的行数。我只是不知道如何编写这个循环。
n = #grep for number of lines
start = #pattern match the start line
f=open('big_file')
#some loop over f from start o start + n
#edit lines
编辑:我的标题可能引发了一场辩论,而不是一个答案。
【问题讨论】:
-
你所说的“#edit lines”是什么意思,对这些行做一些事情,比如将它们存储在一个列表中或将它们写入另一个文件或在大文件中修改这些行?
-
如何找到第一行,以及之后需要编辑的行数?您必须从一开始就读取文件才能做到这一点,对吧?
-
我将编辑文件中的行,然后将输入前后的内容打印到单独的文件中。我将只打印我更改为其他文件的行。
-
@dano 我正在使用
line = subprocess.check_output("grep 'pattern' lotsoftext.txt)找到该信息,但我认为这不会影响答案。我在下面标记的@Dan 的答案能够帮助我。
标签: python iteration large-files