【发布时间】:2017-08-01 03:05:40
【问题描述】:
我的文件夹中有 200 个 CSV 文件。 我要做的是读取每个文件的第一行并写入新的 csv。 最重要的是,我想写 [file,field1,field2,...fieldn] n 是最大字段数。
import csv
import glob
list=[]
hel=[]
files=glob.glob('C:/dataset/*.csv')
with open('test.csv', 'w',newline='') as testfile:
csv_writer = csv.writer(testfile)
for file in files:
with open(file, 'r') as infile:
file=file[file.rfind('\\')+1:]
file=file.strip('.csv')
reader = csv.reader(infile)
headers = next(reader)
hel.append((len(headers)))
max(hel)
lst = [file] + headers
csv_writer.writerow(lst)
结果表明,200 个文件的最大字段数为 255。
所以在新的csv文件之上,我想写file, field1, field2 ... field 255.
我该怎么做?
import csv
import glob
list=[]
hel=[]
files=glob.glob('C:/dataset/*.csv')
with open('test.csv', 'w',newline='') as testfile:
csv_writer = csv.writer(testfile)
for file in files:
with open(file, 'r') as infile:
file=file[file.rfind('\\')+1:]
file=file.strip('.csv')
reader = csv.reader(infile)
headers = next(reader)
hel.append((len(headers)))
b=['field{}'.format(i) for i in range(1,max(hel)+1)]
lst = [file] + headers
csv_writer.writerow(lst)
现在b 是这样的列表 ['field1','field2'...'field255']
我需要在 'field1' 之前插入 'file' 并将该行写在新 csv 文件的顶部。在csv_writer.writerow(lst) 之后编写代码会给我一个带有'field1','field2'.. 的csv 文件,每隔一行。我该如何解决这个问题
【问题讨论】:
-
获取没有父目录路径的文件名,使用
os.basename,使用os.splitext将文件名拆分为主要部分和扩展部分。你应该写file = os.path.splitext(os.path.basename(file))[0] -
你知道程序执行前的最大字段吗?还是要确定程序中的字段数?
-
@frogcoder 通过执行
hel.append((len(headers))),程序知道文件夹中所有文件的最大字段数。在这种情况下,它是 255。使用该数字,我想在我的 csv 文件的开头写入` ['file','field1','field2',...'field255'] `。当一个包含 300 个字段的文件进入我的文件夹时,新的 csv 文件中应该有最多 300 个字段。