[英]Python: Writing to csv-file
我正在尝试读取csv样式的文件并创建另一个文件。 这是(简化的)代码。
import os
import csv
import sys
fn = 'C:\mydird\Temp\xyz'
ext = '.txt'
infn = fn+ext
outfn = fn+'o'+ext
infile = open(infn, newline='')
outfile = open(outfn, 'w', newline='')
try:
reader = csv.reader(infile, delimiter=',', quotechar='"') # creates the reader object
writer = csv.writer(outfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for row in reader: # iterates the rows of the file in orders
if reader.line_num == 1 :
print("Header")
writer.writerow(['Date',
'XY']) # ####### Does not work
else:
# Do something
print(row[0],
row[3]) # ####### Works
writer.writerow([row[0],
row[3]]) # ####### Does not work
finally:
infile.close() # closing
sys.exit(0))
两个writerow语句均不生成输出。
文件已创建,但为空。
打印语句创建“预期”输出。
我也已经尝试过csv.DictWriter,也没有成功。
我看过各种类似的问题,但是看不到任何区别。
我在Win 7机器上使用Py 3.3.3。
编辑:
作者迷失了代码简化
您的代码未定义作者。
添加writer = csv.writer(outfile)
,然后关闭outfile,它应该可以工作。 结合使用with
惯用语可使代码更简洁。
import csv
fn = 'C:\mydird\Temp\xyz'
ext = '.txt'
infn = fn+ext
outfn = fn+'o'+ext
with open(infn) as rf, open(outfn, 'w') as wf:
reader = csv.reader(rf, delimiter=',', quotechar='"')
writer = csv.writer(wf)
for row in reader: # iterates the rows of the file in orders
if reader.line_num == 1 :
print("Header")
writer.writerow(['Date', 'XY'])
else:
# do something
print(row[0], row[3])
writer.writerow([row[0], row[3]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.