Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将整个列添加到csv文件,而不读取文件内容_Python_File_Csv - Fatal编程技术网

Python将整个列添加到csv文件,而不读取文件内容

Python将整个列添加到csv文件,而不读取文件内容,python,file,csv,Python,File,Csv,我需要使用Python向csv文件添加列。我能想到的唯一方法是读取整个文件,编辑每行以添加1个元素,然后再次写入文件。然而,我真的不想这样做,因为文件的大小(超过32000行,似乎每次我想添加一列时都需要大量的读写)。即使使用csv模块,我认为原理也是一样的,阅读所有内容,编辑并再次写入 为了清楚起见,下面是一个csv文件示例 1,2 1,2 1,2 1,2 我想添加第三列,使文件成为: 1,2,3 1,2,3 1,2,3 1,2,3 如果我想添加整行(或行),我可以使用open(csvfi

我需要使用Python向csv文件添加列。我能想到的唯一方法是读取整个文件,编辑每行以添加1个元素,然后再次写入文件。然而,我真的不想这样做,因为文件的大小(超过32000行,似乎每次我想添加一列时都需要大量的读写)。即使使用csv模块,我认为原理也是一样的,阅读所有内容,编辑并再次写入

为了清楚起见,下面是一个csv文件示例

1,2
1,2
1,2
1,2
我想添加第三列,使文件成为:

1,2,3
1,2,3
1,2,3
1,2,3

如果我想添加整行(或行),我可以使用
open(csvfile,'a')
并将最后一行“追加”到文件中。是否有类似的选项来添加列?

不幸的是,这是不可能的。文本文件是序列文件,如果要在两者之间添加内容,则必须移动所有剩余内容(因此必须读写)。

对于原始csv文件,请说
foo.csv

1,2 
1,2
1,2
1,2
3
3
3
3
只需创建另一个包含要添加的列的文件,例如
bar.csv

1,2 
1,2
1,2
1,2
3
3
3
3
然后,可以使用
os.system
as从python内部调用Unix命令

import os
os.system("paste foo.csv  bar.csv -d ',' > output.csv")
1,2,3
1,2,3
1,2,3
1,2,3
这会将结果
output.csv
显示为

import os
os.system("paste foo.csv  bar.csv -d ',' > output.csv")
1,2,3
1,2,3
1,2,3
1,2,3

awk
sed
可以在此处使用,但即使在这种情况下,您也必须读取(和写入)孔文件,不是吗?不,这是不可能的。我建议您使用pandas而不是csv库来操作数据。有点夸张,但更直观。糟糕的解决方案-循环每一行。附加新值。将其写入新文件或同一文件。最好的解决方案是使用
pandas
我认为使用粘贴,本质上意味着文件将被读取并合并到新文件中。然而,我认为这是最好的答案!简单,不需要在Python中进行任何数据操作。我接受了,但由于声誉不好,无法升级。
粘贴确实会遍历文件的全部内容,但它不会在内存中同时读取整个文件。它一行一行地穿过它。