我有一个名为temp。的 我需要将标题更改为 我一直在这里搜索类似的问题并且没有我能理解的解决方案,因为我对python编程比较陌生。到目前为止,我有: 我知道只读取原始文件,然后写入_modified。如何选择当前标题然后更改它们以便它们写入新文件?Item,Description,Base Price,Available
2000-000-000-300,AC - CF/M Series Green For Black Hood,299.99,3
2000-000-000-380,AC - CF/M Series Green For White Hood,299.99,3
Item Number,Item Description,List Price,QTY Available
import csv
import os
inputFileName = "temp.csv"
outputFileName = os.path.splitext(inputFileName)[0] + "_modified.csv"
with open(inputFileName) as inFile, open(outputFileName, "w") as outfile:
r = csv.reader(inFile)
w = csv.writer(outfile)
答案 0 :(得分:15)
标题只是另一行CSV数据。只需将它们作为新行写入输出,然后输入文件中的其余数据。
import csv
import os
inputFileName = "temp.csv"
outputFileName = os.path.splitext(inputFileName)[0] + "_modified.csv"
with open(inputFileName, 'rb') as inFile, open(outputFileName, 'wb') as outfile:
r = csv.reader(inFile)
w = csv.writer(outfile)
next(r, None) # skip the first row from the reader, the old header
# write new header
w.writerow(['Item Number', 'Item Description', 'List Price', 'QTY Available'])
# copy the rest
for row in r:
w.writerow(row)
对于Python 3,请使用:
with open(inputFileName, newline='') as inFile, open(outputFileName, 'w', newline='') as outfile:
您可能需要为数据指定编码。
答案 1 :(得分:2)
另一种解决方案是使用fileinput
模块来更新文件:
import fileinput
for line in fileinput.input('temp', inplace=True):
if fileinput.isfirstline():
print 'Item Number,Item Description,List Price,QTY Available'
else:
print line,
答案 2 :(得分:0)
您可以使用fileinput:
import fileinput
import sys
import os
inputFileName = "temp.csv"
outputFileName = os.path.splitext(inputFileName)[0] + "_modified.csv"
with open(outputFileName, "w") as outfile:
for line in fileinput.input(
[inputFileName],
inplace=False):
if fileinput.isfirstline():
outfile.write('Item Number,Item Description,List Price,QTY Available\n')
else:
outfile.write(line)