[英]Merging several csv files (more than 200) into one csv file in python
[英]Merging several csv files and storing the file names as a variable - Python
我正在嘗試使用python將多個csv文件附加到單個csv文件中,同時將文件名(或更好的是,文件名的子字符串)添加為新變量。 所有文件都有標題。 以下腳本可完成合並文件的技巧,但不會將文件名視為變量問題:
import glob
filenames=glob.glob("/filepath/*.csv")
outputfile=open("out.csv","a")
for line in open(str(filenames[1])):
outputfile.write(line)
for i in range(1,len(filenames)):
f = open(str(filenames[i]))
f.next()
for line in f:
outputfile.write(line)
outputfile.close()
我想知道是否有什么好的建議。 我有大約25k的小型csv文件(每個文件少於100KB)。
簡單的更改將實現您想要的:對於第一行
outputfile.write(line) -> outputfile.write(line+',file')
然后
outputfile.write(line+','+filenames[i])
您可以使用Python的csv
模塊為您解析CSV文件並格式化輸出。 示例代碼(未經測試):
import csv
with open(output_filename, "wb") as outfile:
writer = None
for input_filename in filenames:
with open(input_filename, "rb") as infile:
reader = csv.DictReader(infile)
if writer is None:
field_names = ["Filename"] + reader.fieldnames
writer = csv.DictWriter(outfile, field_names)
writer.writeheader()
for row in reader:
row["Filename"] = input_filename
writer.writerow(row)
一些注意事項:
with
打開文件。 這樣可以確保在您完成處理后將再次關閉它們。 您的代碼無法正確關閉輸入文件。 for x in my_list
使用for x in my_list
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.