Python - 来自不同.csv文件的数据。合而为一

时间:2013-07-11 06:34:24

标签: python csv python-2.7

我需要python程序员帮助解决我在处理数据时面临的问题: -

  • 我将.csv文件放在目录结构中,如下所示: -

    -MainDirectory

    • 子目录1
      • 子目录1A
        • fil.csv
    • 子目录2
      • 子目录2A
        • FILE.CSV
    • 子目录3
      • 子目录3A
        • FILE.CSV

    我想运行一个可以组合所有子目录数据的脚本,而不是进入每个目录并访问.csv文件。

每个文件都有相同类型的标头。我需要维护一个只有一个标头的大.csv文件,所有.csv文件数据可以一个接一个地附加。

我有python脚本,可以将所有文件合并到一个文件中,但只有当这些文件放在一个文件夹中时。

您能帮忙提供一个可以处理上述目录结构的脚本吗?

3 个答案:

答案 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()获取目录

中的文件列表