【发布时间】:2017-08-21 13:37:22
【问题描述】:
我正在尝试逐行解析一个大文件以获取相关信息。 我可能会收到未压缩或 gzip 压缩的文件(我可能需要在稍后阶段编辑 zip 文件)。
我正在使用下面的代码,但我觉得,因为我不在with语句中,我没有逐行解析文件,实际上是在将整个文件file_content加载到内存中。
if ".gz" in FILE_LIST['INPUT_FILE']:
with gzip.open(FILE_LIST['INPUT_FILE']) as input_file:
file_content = input_file.readlines()
else:
with open(FILE_LIST['INPUT_FILE']) as input_file:
file_content = input_file.readlines()
for line in file_content:
# do stuff
对于我应该如何处理这个问题有什么建议吗? 我不希望在代码块之外解压缩文件,因为这需要是通用的,而且我必须整理多个文件。
【问题讨论】:
-
使用
readline()而不是readlines()逐行读取文件 -
我认为当我到达
for line in file_content:时,我已经打开、读入内存并关闭了文件。我可以按原样使用readline(),但我必须复制两个if else:分支的代码。
标签: python python-2.7 gzip