【发布时间】:2019-08-04 07:29:00
【问题描述】:
我想知道,其中哪一种是逐行处理文件内容的更好、更安全的方法。这里的假设是文件的内容非常关键,但文件不是很大,所以内存消耗不是问题。
使用这个尽快关闭文件是否更好:
with open('somefile.txt') as f:
lines = f.readlines()
for line in lines:
do_something(line)
或者直接遍历它:
with open('somefile.txt') as f:
for line in f:
do_something(line)
这些做法中哪一种通常更好且更被接受?
【问题讨论】:
-
如果你在谈论一个巨大的文件,第二种方法在内存使用方面可能更有效,因为你没有预先存储整行。
-
@Austin,OP 表示内存不是问题。但是,OP 提到了关键性,想到的第一个问题是回滚/回退。如果出现问题,最好处理文件的全部内容并退出整个文件吗?或者,处理文件的某些内容是否更好,如果确实发生了问题,那么您是回滚已提交的行还是您对已经处理的行没问题,只重播剩余的行?我认为确定文件的重要性(关于如何处理失败事件)将推动您选择循环。
-
只有在写入文件时,回滚似乎才是问题;对于文件的只读访问,使用文件迭代器或列表迭代器进行迭代并不重要。这只是内存管理的问题。
标签: python python-3.x file file-read