【发布时间】:2013-11-25 17:51:30
【问题描述】:
假设我在Python 中有两个名为A 和B 的CSV 文件。
A 的head 看起来像:
headerNameA1,headerNameA2
1.12412424,1
1,1
1,1
1,1
B 的head 看起来像:
headerNameB1,headerNameB2
1,1
1,1
1,1
1,1
我的目标是将B 附加到A 上,这样A 将如下所示:
headerNameA1,headerNameA2,headerNameB1,headerNameB2
1,1,1.12412424,1
1,1,1,1
1,1,1,1
1,1,1,1
从我问的另一个问题来看,这里的代码将采用 A 和 B 并将它们组合成 C:
import csv
with open('A','rb') as f1, open('B','rb') as f2, open('out.csv','wb') as w:
writer = csv.writer(w)
r1,r2 = csv.reader(f1),csv.reader(f2)
while True:
try:
writer.writerow(next(r1)+next(r2))
except StopIteration:
break
但是,这个问题的目的只是在A后面加上B。
如果A 的大小太大以至于在删除A 之前将其复制为文件C 对磁盘空间来说太昂贵,则这是必要的。
可以接受通过os.system 调用的 bash 解决方案
【问题讨论】:
-
这些 CSV 文件有多大,它们的组合大小是一个问题?另外,你的代码写
for r1, r2 in izip(f1, f2):的方式很奇怪——这是怎么回事? -
而且生成的文件也将在远程服务器上?还是您在本地创建它?将要使用该文件的内容 - 不能按原样接受这两个文件吗...多一点上下文会很棒
-
很好 - 我只是想确定这是否是您真正需要做的事情...如果您坚持要采用这种方法并冒更新 @987654345 的风险@失败,然后你如何重新运行以考虑到这一点 - 祝你好运。我更多地考虑取决于如何使用此文件(您没有在对我的评论的回复中包含该文件),然后您保留两个文件但创建两个文件的“视图”用作“新 A”。
-
A 和 B 是否包含相同的行数?您是否期待另一个更新(我们称之为 C),以便在另一个运行中...... A 应该实际上是 A + B + C 等......?
-
服务器系统使用的是什么操作系统?