【发布时间】:2015-05-07 05:16:11
【问题描述】:
在我的小 Python 脚本中,我打开一个 csv 文件,向其写入标题,处理一个循环,在该循环中我打开许多其他 csv 文件以查看它们,最后我将每个循环写入第一个 csv:
import csv
with open(output_file, 'wb') as f:
outfileWriter = csv.writer(f, delimiter=',')
# write header
for loop_file in a_list_of_files:
with open(loop_file) as s:
# calculate something on the file and write one line to f
现在是保持 f 打开(即缩进循环)还是打开它一次对等循环更好?什么更 Pythonic/更快?
【问题讨论】:
-
这个问题将吸引大多数基于偏好的答案,因此不属于 StackOverflow(可能在 CodeReview),因为您没有真正的问题(“我的代码没有” t 工作”/“我如何用那种语言做到这一点”)。话虽如此:在您的循环中,收集数据,将数据添加到列表中,然后在数据收集循环结束时,将列表列表一次写入输出文件。
-
@OliverW。对平均数据集有很好的建议,但不能扩展到真正的大数据。在其他条件相同的情况下,最好在循环之前打开输出文件一次,因为打开/刷新/关闭文件的开销要少得多。
-
@tdelaney,对于真正大的东西,可以在循环中添加一个检查,看看这个缓冲区(列表)何时“足够大”,然后写入文件(或使用线程做那个检查)。考虑到你的名声,我相信你知道。只需添加它以供将来参考。仍然相信这个问题不适合 SO。
-
@Oliver:你说的是过早优化,万恶之源。 tdelaney 的建议是一个很好的经验法则,因为在提高任何程序的执行速度方面,最小化操作系统调用几乎总是一个好习惯。
-
我完全误解了这个问题并撤回了我的近距离投票。 @tdelaney,您可能想考虑添加您的评论作为答案,我会赞成。