3

我有一些非常简单的代码:

import csv
out = csv.writer(open('test.csv', 'wb'), delimiter=",")
out.writerow([u"value1", u"value2", u"value3"])

它有时有效,但大多数时候无效!我记得我以前使用过 writerow,它工作得很好,我在这里错过了什么?

为了让问题更清楚:尽管上面的代码执行没有任何错误,但 csv 文件仍然是空的

4

3 回答 3

3

我将代码修改为如下所示:

import csv
f = open('test.csv', 'wb')
out = csv.writer(f, delimiter=",")
out.writerow([u"value1", u"value2", u"value3"])
f.close()

所以我所做的就是将 分开open('test.csv', 'wb')并将其分配给f,以便我可以f.close()在最后使用。它以这种方式完美运行。

于 2012-12-02T23:30:40.980 回答
2

完成您正在做的事情的一种稍微 Pythonic 的方式是使用上下文管理器,它由with语句指定:

In [1]: import csv

In [2]: with open('test.csv', 'wb') as f:
   ...:     writer = csv.writer(f)
   ...:     writer.writerow([u"value1", u"value2", u"value3"])

当您使用with时,除其他外,它可确保在代码退出缩进块时正确关闭文件。此外,在使用csv模块时,默认分隔符是,,因此您实际上可以从您的writer(或out在您的情况下)声明中省略它。

于 2012-12-02T23:43:45.607 回答
0

我通过关注如何缩进包含 csv.writer 的块来解决这个问题。我在阅读后进行的其他一些迭代下,将其缩进了更多。

with open('retrans.csv') as csvfile:
    file1 = csv.reader(csvfile, delimiter = ',')
    print(file1)

    next(file1)

    count = 0
    for row in file1:
        while count < 1:
            print(row)  
            count +=1

            with open("newfile.csv", 'w', newline = '') as outfile:
                csv_writer = csv.writer(outfile, delimiter = ',')
                for lines in file1:
                    csv_writer.writerow(lines)
于 2019-01-23T04:40:57.017 回答