python为一批csv文件按列组合值
我有一批100多个CSV格式的文件:python为一批csv文件按列组合值,python,csv,Python,Csv,我有一批100多个CSV格式的文件: time,0 user time,0.6 CPU load, 5% swaps,0 etc 我必须合并所有这些文件- 此代码为我提供了所需的输出 加入-11-21-t,-a1 f1.csv f2.csv>res.csv time,0,0 user time,0.6,0.8 CPU load, 5%,7% swaps,0,0 etc 但我只能给出2个文件作为参数 有没有一种方法可以编写python代码来迭代目录中的所有csv文件(即使是bash文件也可以)
time,0
user time,0.6
CPU load, 5%
swaps,0
etc
我必须合并所有这些文件-
此代码为我提供了所需的输出
加入-11-21-t,-a1 f1.csv f2.csv>res.csv
time,0,0
user time,0.6,0.8
CPU load, 5%,7%
swaps,0,0
etc
但我只能给出2个文件作为参数
有没有一种方法可以编写python代码来迭代目录中的所有csv文件(即使是bash文件也可以)类似的内容?它使用
glob
打开当前工作目录中的所有.csv文件(output.csv除外,如果存在):
是的,您可以在Python和Bash中这样做。也就是说,如果你有问题,请准确描述你有什么问题。作为这里的一个新用户,也可以阅读。最后,在盲目应用标签之前,请阅读标签说明。更具体地说,“linux”标签是完全错误的。
def main():
from pathlib import Path
from contextlib import ExitStack
from csv import reader
from collections import defaultdict
master_dict = defaultdict(list)
glob_pattern = "[!output]*.csv"
with ExitStack() as stack:
readers = [reader(stack.enter_context(path.open("r"))) for path in Path(".").glob(glob_pattern)]
for reader in readers:
for row in reader:
key, value = row
master_dict[key].append(value)
with Path("output.csv").open("w") as master_file:
for key, value_list in master_dict.items():
master_file.write(",".join([key] + value_list) + "\n")
return 0
if __name__ == "__main__":
import sys
sys.exit(main())