我需要python程序员帮助解决我在处理数据时面临的问题: -
我将.csv文件放在目录结构中,如下所示: -
-MainDirectory
我想运行一个可以组合所有子目录数据的脚本,而不是进入每个目录并访问.csv文件。
每个文件都有相同类型的标头。我需要维护一个只有一个标头的大.csv文件,所有.csv文件数据可以一个接一个地附加。
我有python脚本,可以将所有文件合并到一个文件中,但只有当这些文件放在一个文件夹中时。
您能帮忙提供一个可以处理上述目录结构的脚本吗?
答案 0 :(得分:3)
试试这段代码,我在笔记本电脑上测试过,效果很好!
import sys
import os
def mergeCSV(srcDir,destCSV):
with open(destCSV,'w') as destFile:
header=''
for root,dirs,files in os.walk(srcDir):
for f in files:
if f.endswith(".csv"):
with open(os.path.join(root,f),'r') as csvfile:
if header=='':
header=csvfile.readline()
destFile.write(header)
else:
csvfile.readline()
for line in csvfile:
destFile.write(line)
if __name__ == '__main__':
mergeCSV('D:/csv','D:/csv/merged.csv')
答案 1 :(得分:0)
您不必将所有文件放在一个文件夹中。当您对文件执行某些操作时,您只需要该文件的路径。因此,收集所有csv文件的路径并执行组合。
import os
csvfiles = []
def Test1(rootDir):
list_dirs = os.walk(rootDir)
for root, dirs, files in list_dirs:
for f in files:
if f.endswith('.csv'):
csvfiles.append(os.path.join(root, f))
答案 2 :(得分:0)
您可以使用os.listdir()获取目录
中的文件列表