从多个文件夹导入CSV文件,并将文件名附加为python

时间:2018-05-27 07:44:54

标签: python

我试图在不使用pandas的情况下将多个csv文件导入单个文件。我有以下代码。但是,我希望能够将文件名添加为输出文件中的新列。我已经用Pandas完成了它,但是花费了几百个csv文件使用Pandas。以下代码可用于创建单个文件。

import shutil
import glob, os
    os.chdir("D:\\DATA")
    allFiles = glob.glob("**/*.csv", recursive = True)
    with open('D:\\AllData.csv', 'wb') as outfile:
        for i, fname in enumerate(allFiles):
            with open(fname, 'rb') as infile:
                shutil.copyfileobj(infile, outfile)

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

逐行完成任务不应该花费太长时间

import glob, os
os.chdir("D:\\DATA")
allFiles = glob.glob("**/*.csv", recursive = True)
data = []
for i, fname in enumerate(allFiles):
    with open(fname, 'r') as infile:
        read_lines = infile.readlines()
        read_lines = ['{0},{1}'.format(line.rstrip('\n'),fname) for line in read_lines]
        data += read_lines

with open('D:\\AllData.csv', 'w') as outfile:
    outfile.write('\n'.join(data))

答案 1 :(得分:0)

以下使用os.path.basename工作。

filename = os.path.basename(fname).split('。')[0] 对于read_lines中的行,read_lines = [' {0},{1}' .format(line.rstrip(' \ n'),filename)