为什么我的文件不打印?我一直收到I / O错误

时间:2014-04-24 08:16:34

标签: python

 print ('test.csv')

 # This is where all data will be place into CSV format
import csv
with open('test.csv', 'wb') as fp:
#csv = csv.DictWriter(fp, ['f1', 'f2'])
test_file = 'test.csv'
csvfile = 'test.csv'
csvfile = csv.DictReader(open (test_file, 'rb'), delimiter= ',', quotechar='"')
fieldnames = ['Somefield']
test_file = open ('test.csv','wb')
csvwriter = csv.DictWriter(test_file, delimiter=',', fieldnames=fieldnames)
csvwriter.writerow(dict ((fp, fp) for fp in fieldnames))
for row in test_file:
 csvwriter.writerow(row)
test_file.close()
for row in row: csv.writerow (row)

当我运行此代码时,我得到IOError:文件未打开,无法读取" for test_file"这里有什么问题?在我看来,就像我在上面打开它一样。

2 个答案:

答案 0 :(得分:0)

您已在不同的文件句柄上打开了两次相同的文件。这不行。使用不同的文件名进行输出,或者在写入之前读取并关闭并重新打开。

答案 1 :(得分:0)

在文件开头,您正在以写入模式打开test.csv。这将消灭那里写的任何东西。 另外,您是以二进制格式打开它,但如果是csv,则需要以文本格式打开它。

其他问题:

with open('test.csv', 'wb') as fp:

fp未在程序中的任何其他位置使用。除了擦干文件外,这里没用。

csvfile = 'test.csv'
csvfile = csv.DictReader(open (test_file, 'rb'), delimiter= ',', quotechar='"')

第一行什么都不做,因为它只会被覆盖。再次,您打开空文件。

test_file = open ('test.csv','wb')
csvwriter = csv.DictWriter(test_file, delimiter=',', fieldnames=fieldnames)

在这里,你再次打开同一个文件。

for row in row:
    csv.writerow (row)

你想在这做什么?你以一种非常混乱的方式覆盖你的迭代器。也许你想做for row in test_file

之类的事情

另外,writerow是DictWriter的方法,而不是csv的方法。这将引发异常。

相关问题