【发布时间】:2018-08-07 16:23:38
【问题描述】:
我想根据文件名的条件合并不同的文件。例如,
Name1_Stuff1_A.csv
Name1_Stuff1_B.csv
Name1_Stuff2_A.csv
Name1_Stuff2_B.csv
Name1_Stuff3_A.csv
Name1_Stuff3_B.csv
合并:
Name1_Stuff1_A + Name1_Stuff2_A + Name1_Stuff3_A -> Name1_Total_A
Name1_Stuff1_B + Name1_Stuff2_B + Name1_Stuff3_B -> Name1_Total_B
Then move on to another name, e.g., Name2, and so on
我试过了:
for name in names:
with open('{}_Total_A.csv'.format(name), 'a') as merged_file:
for file in glob.glob('*.csv'):
for line in open(file, 'r'):
merged_file.write(line)
但它只返回 A(没有 B):
Name1_Total_A.csv
Name2_Total_A.csv
并且A文件与所有文件合并。
我该怎么做:
Name1_Total_A.csv
Name2_Total_B.csv
Name1_Total_A.csv
Name2_Total_B.csv
其中 Name1_Total_A.csv 按 Name1_Stuff1_A.csv、Name1_Stuff2_A.csv 和 Name1_Stuff3_A.csv 的顺序合并,其他文件也是如此
谢谢!
【问题讨论】:
-
我真的认为您在询问我们之前就已经到了尝试自己的想法的地步。如果这两种方法不起作用,您的计算机不会爆炸 :) 尝试它们,如果有问题,请尝试在它们的基础上构建,如果您完全卡住,请提出问题。
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 on topic 和 how to ask 在这里申请。 StackOverflow 不是设计、编码、研究或教程服务。一般来说,“这行得通”的问题最好向最终权威提出:Python 运行时系统。 :-)
-
感谢@roganjosh 和 Prune 的友好回复。对不起,这是我第一次在这里发布问题。我尝试了 for 循环,但没有尝试拆分。 for 循环将返回格式为 *_D.csv 的所有文件。所以它将彼得、约翰、杰克、乔合并到一个文件中,这不是我想要的。我知道问题应该是由 for 循环引起的,就像我如何构造它一样。但我真的被困在那里。你能解释一下吗?不胜感激。
-
请edit 显示您的 CSV 文件示例以及您希望合并的 CSV 文件如何显示的问题。
-
感谢@MartinEvans。我想现在应该更清楚了。
标签: python csv merge append concatenation