Skip to main content
 首页 » 编程设计

python之python写csv文件(运行结束文件留空)

2025年05月04日20lidabo

我正在用 python 写入 csv,我想知道为什么当程序完成运行时我的输出文件是空白的。首先,这是我的代码:

reader = csv.reader(open(location, 'rU'), delimiter = ',', quotechar = '"') 
writer = csv.writer(open('temp.csv', 'wb'), delimiter = ',', quotechar = '"') 
 
writer.writerow(["test", "test", "test", "test", "test", "test", "test"]) 
 
count = 0 
for row in reader: 
    if count != 0 and count < len(split): 
        writer.writerow([row[0], row[1], row[2], row[3], row[4], row[5], split[count-1]]) 
    count = count + 1 

我知道一些关于它的事情:

  • 当程序结束时,所有写入“temp.csv”的都是“测试”行。文档的其余部分是空的。
  • 如果我在运行过程中强行停止程序,实际上有文本被写入文件:它只是出于某种原因被删除。
  • 我做了一些研究,很多人发现“关闭”csv 文件可以解决他们的问题,但这似乎对我不起作用,除非我遗漏了一些明显的东西!

预先感谢您的帮助!

编辑:这是我正在使用的一些更新代码:

infile = open(location, 'rU') 
outfile = open('temp.csv', 'wb') 
reader = csv.reader(infile, delimiter = ',', quotechar = '"') 
writer = csv.writer(outfile, delimiter = ',', quotechar = '"') 
split = email_text.split('NEW MESSAGE BEGINS HERE') 
 
count = 0 
for row in reader: 
    if count != 0 and count < len(split): 
        writer.writerow([row[0], row[1], row[2], row[3], row[4], row[5], split[count-1]]) 
        outfile.flush() 
    count = count + 1 
 
infile.close() 
outfile.close() 

请您参考如下方法:

您没有关闭文件。虽然如果您只是在读取文件,这可能工作得很好,但在写入文件时这样做绝对不是一个好主意。

使用上下文管理器:

with open(location, 'rU') as infile, open('temp.csv', 'wb') as outfile: 
    reader = csv.reader(infile, delimiter = ',', quotechar = '"') 
    writer = csv.writer(outfile, delimiter = ',', quotechar = '"') 
    ... 

这确保了当 with block 退出时文件将被关闭(即使是因为异常)。