【发布时间】:2023-04-09 05:27:02
【问题描述】:
我正在用 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()
【问题讨论】:
-
如何关闭文件?您没有保存可以使用
.close()方法的文件句柄。 -
旁白:您可以使用
for count, row in enumerate(reader):,而不是手动增加计数。 -
@brian:我刚刚有了一个疯狂的想法。您能否在循环中添加
print count语句并确认计数实际上在增加?