csv';python中的writerow不';我大部分时间都不工作

csv';python中的writerow不';我大部分时间都不工作,python,csv,Python,Csv,我有一些非常简单的代码: import csv out = csv.writer(open('test.csv', 'wb'), delimiter=",") out.writerow([u"value1", u"value2", u"value3"]) 它有时起作用,但大多数时候不起作用!我记得我以前用过writerow,它工作得很好,我在这里遗漏了什么 为了让问题更清楚:尽管执行上述代码时没有任何错误,但csv文件仍然为空 import csv f = open('test.csv', '

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

import csv
out = csv.writer(open('test.csv', 'wb'), delimiter=",")
out.writerow([u"value1", u"value2", u"value3"])
它有时起作用,但大多数时候不起作用!我记得我以前用过writerow,它工作得很好,我在这里遗漏了什么


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

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()
。这样做效果很好。

完成您所做的事情的一种稍微有点类似python的方法是使用A,它由
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"])

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

我通过关注如何缩进包含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)
以open('retrans.csv')作为csvfile的
:
file1=csv.reader(csvfile,分隔符=',')
打印(文件1)
下一步(文件1)
计数=0
对于文件1中的行:
当计数小于1时:
打印(行)
计数+=1
以open(“newfile.csv”,“w”,换行=”)作为输出文件:
csv_writer=csv.writer(输出文件,分隔符=',')
对于文件1中的行:
csv_writer.writerow(行)

“不起作用”是含糊不清的。描述一下它是如何不适合您的——不会立即生成可见的输出吗?抛出异常?如果问题是没有刷新到文件,那么,这是一个很容易解决的问题,或者在关闭输出文件时最终会自行修复。除了缓冲区问题(要修复它;刷新或关闭文件),请查看如何使用任意编码将Unicode写入文件(否则,如果编码使用零字节(例如utf-16),您可能会遇到问题)。很好。关闭流,您将强制它刷新到磁盘。