您應該一定使用懶惰的生成器來一次解析這樣一個巨大的文件,或將文件分成較小的塊。
一種可能性:
def lazy_reader(path):
"""reads a file one line at a time."""
try:
file = open(path, 'r')
while True:
line = file.readline()
if not line: break
yield line # "outputs" the line from the generator
except IOError:
sys.stderr.write("error while opening file at %s\n" % path)
sys.exit(2)
finally:
file.close()
,然後你可以消耗你產生這樣的
for line in lazy_reader("path/to/your/file"):
do_something_with(line)
編輯:你也可以在簡潔的結合發電機 「流水線」 的方法:
def parse(generator):
for line in generator: yield line.strip('\n').split('|')
for data in parse(lazy_reader("path/to/your/file")):
do_something_with_splitted_array(data)
解決了我的問題。謝謝。 – user1839897