我试图在.csv文件的开头添加一个新的“文件名”列,然后将该文件的名称添加到每一行
示例input.csv
Date,Day,Server
2018-5-20,Su,ASA
2018-5-21,Su,ASA示例输出
Filename,Date,Day,Server
input,2018-5-20,Su,ASA
input,2018-5-21,Su,ASA使用csv模块将文件名添加到.csv的末尾看起来很容易,但是在开始时添加一个新列看起来更棘手。
任何帮助都是非常感谢的。
到目前为止,我从网上搜索silmilar问题的内容如下:
with open(r'C:\Python\sys_status\output.csv', 'w', newline='') as file_output:
csv_output = csv.writer(file_output)
for fname in glob.glob(r'C:\Python\sys_status\input.csv'):
with open(fname, newline='') as f_input:
csv_input = csv.reader(f_input)
for row in csv_input:
row.insert(0, fname)
csv_output.writerow(row)使用上述方法,我无法设置标题名称,而是将文件名的整个路径添加到第一列
C:\Python\input.csv,Date,Day,Server
C:\Python\input.csv,2018-5 -20,Su,ASA
C:\Python\input.csv,2018-5 -21,Su,ASA发布于 2018-05-21 00:16:35
第一个row包含CSV文件的头。在编写新的csv文件时,应该使用第一个writerow来编写头文件。
import csv, glob, os
with open(r'C:\Python\sys_status\output.csv', 'w', newline='') as file_output:
csv_output = csv.writer(file_output)
for fname in glob.glob(r'C:\Python\sys_status\input.csv'):
with open(fname, newline='') as f_input:
csv_input = csv.reader(f_input)
# Header processing
header = csv_input.__next__()
header.insert(0, "filename")
csv_output.writerow(header)
for row in csv_input:
print(row)
row.insert(0, fname)
csv_output.writerow(row)备注我建议使用csv.DictWriter和csv.DictReader,它们可以指定要写入/读取的字段名,并具有writeheader函数。这没有提供任何显著的优势,但使我们的代码更简洁。
发布于 2018-05-21 00:15:32
这应该能行
import os.path
import csv
import glob
with open(r'C:\Python\sys_status\output.csv', 'w', newline='') as file_output:
csv_output = csv.writer(file_output)
for fname in glob.glob(r'C:\Python\sys_status\input.csv'):
with open(fname, newline='') as f_input:
csv_input = csv.reader(f_input)
fname = os.path.split(fname).pop()
for i, row in enumerate(csv_input):
if i == 0:
row.insert(0, 'Filename')
else:
row.insert(0, fname)
csv_output.writerow(row)https://stackoverflow.com/questions/50440002
复制相似问题