繁体   English   中英

Python:写入csv文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM