Skip to main content
 首页 » 编程设计

python之将目录中所有文件的第 n 列复制到一个文件中

2025年05月04日7itcoder

我有一个包含许多 .csv 文件的目录。如何按列将每个文件的第 n 列提取到新文件中?

例如:

文件A:

111,222,333 
111,222,333 

文件 B:

AAA,BBB,CCC 
AAA,BBB,CCC 

文件 C:

123,456,789 
456,342,122 

等等……

如果 n = 2,我希望生成的文件是:

222,BBB,456,...  
222,BBB,342,... 

其中 ... 表示将有与目录中的文件数一样多的列。

到目前为止我的尝试:

#!/bin/bash 
 
for i in `find ./ -iname "*.csv"` 
  do 
    awk -F, '{ print $2}' < $i >> result.csv ## This would append row-wise, not column-wise. 
  done 

更新:

我不只是想连接两个文件。特定目录中有 100 个文件,我想将所有文件的第 n 列复制到一个文件中。我以两个文件为例,说明如果只有两个文件,我希望数据如何。

正如评论中指出的那样,加入两个文件很简单,但加入多个文件可能并不那么容易,这就是我的问题所在。 python 会帮助完成这项工作吗?

请您参考如下方法:

基于 triplee 的解决方案,这是一个使用 eval 的通用版本:

eval paste -d, $(printf "<(cut -d, -f2 %s) " *.csv)

我不太喜欢 eval(使用它时一定要小心),但它有它的用途。