[英]How to merge multiple text files into one csv file in Python
I am trying to convert 200 text files into csv files.我正在尝试将 200 个文本文件转换为 csv 文件。 I am using below code I am able to run it but it does not produce csv files.
我正在使用下面的代码,我可以运行它,但它不会生成 csv 文件。 Could anyone tell any easy and fast way to do?
谁能告诉任何简单快捷的方法? Many Thanks
非常感谢
dirpath = 'C:\Files\Code\Analysis\Input\qobs_RR1\\'
output = 'C:\Files\Code\Analysis\output\qobs_CSV.csv'
csvout = pd.DataFrame()
files = os.listdir(dirpath)
for filename in files:
data = pd.read_csv(filename, sep=':', index_col=0, header=None)
csvout = csvout.append(data)
csvout.to_csv(output)
The problem is that your os.listdir
gives you the list of filenames inside dirpath
, not the full path to these files.问题是您的
os.listdir
为您提供了dirpath
中的文件名列表,而不是这些文件的完整路径。 You can get the full path by prepending the dirpath
to filenames with os.path.join
function.您可以通过使用
os.path.join
函数将dirpath
路径添加到文件名中来获取完整路径。
import os
import pandas as pd
dirpath = 'C:\Files\Code\Analysis\Input\qobs_RR1\\'
output = 'C:\Files\Code\Analysis\output\qobs_CSV.csv'
csvout_lst = []
files = [os.path.join(dirpath, fname) for fname in os.listdir(dirpath)]
for filename in sorted(files):
data = pd.read_csv(filename, sep=':', index_col=0, header=None)
csvout_lst.append(data)
pd.concat(csvout_lst).to_csv(output)
Edit: this can be done with a one-liner:编辑:这可以用单线完成:
pd.concat(
pd.read_csv(os.path.join(dirpath, fname), sep=':', index_col=0, header=None)
for fname in sorted(os.listdir(dirpath))
).to_csv(output)
Edit 2: updated the answer, so the list of files is sorted alphabetically.编辑 2:更新了答案,因此文件列表按字母顺序排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.