假设我在Python
中有两个名为A
和B
的CSV文件。在
A
的head
看起来像:
headerNameA1,headerNameA2
1.12412424,1
1,1
1,1
1,1
B
的head
看起来像:
我的目标是获取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
和{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解决方案是可接受的
如果同一个文件有两个文件句柄-一个在“read”模式下,一个在“update”模式下(
r+b
),那么相同的策略应该有效。在如果可能的话,我建议不要使用这种方法,只需显式地写入第三个文件。在
你也许可以通过命名管道逃脱惩罚。您有一个Python进程运行,它创建一个管道并以写模式打开它。然后它输出CSV文件的列级连接(类似于您已经得到的)。。。当另一个进程开始读取该文件时,它将能够使用这些数据,但实际上没有文件存储在服务器上,它只是按需提供的。当“文件”被使用时,其中就没有任何内容,任何试图访问它的尝试都将被阻止,直到另一个进程写入另一端。在
一些伪代码-需要更多考虑的异常处理等
其他程序以读取模式打开该“文件”,并使用它来检索数据。除非这个过程必须有“物理文件”。。。在
相关问题 更多 >
编程相关推荐