用python编写csv文件(操作结束时文件保留为空)

用python编写csv文件(操作结束时文件保留为空),python,csv,writer,Python,Csv,Writer,我正在用python编写csv,我想知道为什么当程序运行完成时,我的输出文件是空白的。首先,这是我的代码: reader = csv.reader(open(location, 'rU'), delimiter = ',', quotechar = '"') writer = csv.writer(open('temp.csv', 'wb'), delimiter = ',', quotechar = '"') writer.writerow(["test", "test", "test",

我正在用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
reader=csv.reader(打开(位置'rU',分隔符=',',引号=')
writer=csv.writer(打开('temp.csv','wb'),分隔符=',',引号=')
writer.writerow([“测试”、“测试”、“测试”、“测试”、“测试”、“测试”])
计数=0
对于读取器中的行:
如果计数!=0和计数
我知道一些关于它的事情:

  • 当程序完成时,写入“temp.csv”的所有内容都是“test”行。文档的其余部分为空
  • <> LI>如果在运行过程中强制停止该程序,则实际上将文本写入文件:它由于某种原因而被擦除。
  • 我做了一些研究,很多人发现“关闭”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()
infle=open(位置'rU')
outfile=open('temp.csv','wb')
reader=csv.reader(填充,分隔符=',',引号='”)
writer=csv.writer(输出文件,分隔符=',',引号='”)
split=email\u text.split('新邮件从此处开始')
计数=0
对于读取器中的行:
如果计数!=0和计数
您没有关闭该文件。如果你只是在读一个文件,这可能很好,但在写一个文件的时候这样做绝对不是一个好主意

使用上下文管理器:

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
块时关闭文件(即使是因为异常)。

您没有关闭文件。如果你只是在读一个文件,这可能很好,但在写一个文件的时候这样做绝对不是一个好主意

使用上下文管理器:

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
块时关闭文件(即使是因为异常)。

更改前两行以保存打开的文件句柄,然后包括关闭调用

reader_file = open(location, 'rU')
writer_file = open('temp.csv', 'wb')
reader = csv.reader(reader_file, delimiter = ',', quotechar = '"')
writer = csv.writer(writer_file, delimiter = ',', quotechar = '"')

# ... rest of code ...

reader_file.close()
writer_file.close()

更改前两行以保存打开的文件句柄,然后包括关闭调用

reader_file = open(location, 'rU')
writer_file = open('temp.csv', 'wb')
reader = csv.reader(reader_file, delimiter = ',', quotechar = '"')
writer = csv.writer(writer_file, delimiter = ',', quotechar = '"')

# ... rest of code ...

reader_file.close()
writer_file.close()


你将如何关闭该文件?您没有保存可以使用
.close()
方法的文件句柄。旁白:不必手动增加计数,您可以在enumerate(reader)中使用
进行计数,行:
@brian:我有一个疯狂的想法。能否在循环中添加一个
print count
语句,并确认计数确实在上升?如何关闭该文件?您没有保存可以使用
.close()
方法的文件句柄。旁白:不必手动增加计数,您可以在enumerate(reader)中使用
进行计数,行:
@brian:我有一个疯狂的想法。你能在循环中添加一个
print count
语句并确认计数确实在上升吗?嗨,我试过了,在“with open(location,'rU')”位出现了一个“无效语法”错误。对不起,我是python新手@布莱恩:你一定在使用旧版本的Python<从Python 2.6开始就可以使用带有
的代码>了(在Python 2.5上,如果您从语句)。我使用的是Python 2.4.3,但我在网络上,所以我没有安装或更新任何内容的权限。有没有办法读懂2.4.3中的内容?哇。Python 2.4又有多老了?超过6年?好吧,那么就不要给你写
声明了。但您仍然可以执行
infle=open(…)
outfile=open(…)
,然后执行
reader=csv.reader(infle…)
等操作,最后调用
infle.close()
,尤其是
outfile.close()
。好的,我这样做了,但我的outfile中仍然没有留下任何东西!我不确定问题是什么……嗨,我试过了,在“with open(location,'rU')”位出现了一个“无效语法”错误。对不起,我是python新手@布莱恩:你一定在使用旧版本的Python<从Python 2.6开始就可以使用带有
的代码>了(在Python 2.5上,如果您从
语句)。我使用的是Python 2.4.3,但我在网络上,所以我没有安装或更新任何内容的权限。有没有办法读懂2.4.3中的内容?哇。Python 2.4又有多老了?超过6年?好吧,那么就不要给你写
声明了。但您仍然可以执行
infle=open(…)
outfile=open(…)
,然后执行
reader=csv.reader(infle…)
等操作,最后调用
infle.close()
,尤其是
outfile.close()
。好的,我这样做了,但我的outfile中仍然没有留下任何东西!我不确定问题是什么…这对我来说不起作用,我仍然有一个空的输出文件!您的if语句可能有问题。否则,您是否打算以二进制模式打开writer_文件?这对我不起作用,我仍然有一个空的outfile!您的if语句可能有问题。否则,您是否打算以二进制模式打开writer_文件?