【发布时间】:2014-03-27 04:38:31
【问题描述】:
我正在运行一个脚本来将一些标题列恢复为 CSV 文件。它将具有标题列的原始文件作为字典,并将它们缝合回丢失标题列的文件中。
问题是它非常慢。这些文件都是中等大小(~50mb),有 200,000 行 x 96 列。目前,当我预览输出文件时,它看起来是正确的。每 10 分钟大小增加约 200kb。
我在编码方面绝对是个菜鸟,所以任何帮助找出脚本为何如此缓慢的帮助将不胜感激。
hapinfile = file('file_with_header_columns', 'r')
hapoutfile = file('file_missing_header_columns.csv', 'r')
o = file('filescombined.txt', 'w')
dictoutfile={}
for line in hapoutfile:
a=line.rstrip('\n').rstrip('\r').split('\t')
dictoutfile[a[0]]=a[1:]
hapinfile.close()
for line in hapinfile:
q=line.rstrip('\n').rstrip('\r').split('\t')
g=q[0:11]
for key, value in dictoutfile.items():
if g[0] == key:
g.extend(value)
o.write(str('\t'.join(g)+'\n'))
hapoutfile.close()
o.close()
【问题讨论】:
-
为什么不使用
csv模块来处理CSV 文件? -
如果我理解问题所在,您有两个巨大的 .csv 文件。它们都具有相同的格式,但其中第一行是列名。您想将第二个文件(没有列名)附加到第一个文件。对吗?
-
但是看起来第二个文件充满了您想要覆盖的数据?不只是一个标题行然后空白?
-
实际上,您似乎正在对这两个文件进行比较。每当两个文件中都有标头(第一个列)时,您就将第一个文件的数据写入第三个文件。 o.O
-
您正在将两个文件都读入内存,这不是必需的,您可以逐行浏览文件。
标签: python csv dictionary split strip