【发布时间】:2018-08-15 19:34:15
【问题描述】:
已经进行了很好的搜索,但找不到我要查找的内容。我有许多由 CFD 模拟打印的 csv 文件。我的 python 脚本的目标是:
- 获取每个csv的最后一行
- 将行添加到新文件中,并将文件名添加到每行的开头
目前我有
if file.endswith(".csv"):
with open(file, 'r') as f:
tsrNum = file.translate(None, '.csv')
print(tsrNum + ', ' + ', '.join(list(csv.reader(f))[-1]))
它将正确的值打印到终端中,但我必须手动将其粘贴到新文件中。
有人可以帮助完成最后一步吗?我对 python 的语法不够熟悉,当然,一旦我完成了这个 CFD 项目,就在我的待办事项清单上,因为到目前为止,当我设法正确实现它时,这真是太棒了。我尝试使用循环和csv.dictWriter,但收效甚微。
编辑
我无法让发布的解决方案正常工作。这是一个人帮我写的代码
import csv
import os
import glob
# get a list of the input files, all CSVs in current folder
infiles = glob.glob("*.csv")
# open output file
ofile = open('outputFile.csv', "w")
# column names
fieldnames = ['parameter','time', 'cp', 'cd']
# access it as a dictionary for easy access
writer = csv.DictWriter(ofile, fieldnames=fieldnames)
# output file header
writer.writeheader()
# iterate through list of input files
for ifilename in infiles:
# open input file
ifile = open(ifilename, "rb+")
# access it as a dictionary for easy access
reader = csv.DictReader(ifile)
# get the rows in reverse order
rows = list(reader)
rows.reverse()
# get the last row
row = rows[0]
# output row to output csv
writer.writerow({'parameter': ifilename.translate(None, '.csv'), 'time': row['time'], 'cp': row['cp'], 'cd': row['cd']})
# close input file
ifile.close()
# close output file
ofile.close()
【问题讨论】: