【发布时间】:2013-11-10 20:50:19
【问题描述】:
我已经测试了下面的代码,除了第 29 行之外,一切都按照我的预期进行。final.write(invrow) 实际上并没有写入文件。当我使用简单的打印 invrow 时,它显示没有问题。我没有错误,这里发生了什么?我错过了什么?我做错了什么?
import csv
inv = csv.DictReader(open('ireport.txt', 'rU'), dialect='excel-tab', delimiter="\t")
vbr = csv.DictReader(open('vb.txt', 'rU'), dialect='excel-tab', delimiter="\t")
mainr = csv.DictReader(open('main.txt', 'rU'), dialect='excel-tab', delimiter="\t")
final = open('ireport2.tab', 'w')
inva = []
maina = []
vba = []
for row in inv:
inva.append(row)
for row in mainr:
maina.append(row)
for row in vbr:
vba.append(row)
for invrow in inva:
for mainrow in maina:
try:
if invrow['\xef\xbb\xbfPART_CODE'] == mainrow['PART CODE']:
invrow['MAINQTY'] = mainrow['ON-HAND']
print invrow # works
final.write(invrow) #doesn't work. Why?
except TypeError:
pass
except ValueError:
pass
final.close()
【问题讨论】:
-
我不能肯定,但是如果您以
wb而不是w打开文件呢?你能描述一下“不起作用”是什么意思吗? -
你能提供回溯吗?
-
except TypeError: pass真的很可疑!默默地丢弃错误通常不是一个好主意。 -
取出
TypeError和ValueError异常处理程序:它们很可能隐藏了您应该看到的错误。 -
您也明确地关闭了文件
final.close(),但如果程序干净退出,这应该不是问题。在这些情况下,通常使用with语句。with open(outfile, "w") as final:
标签: python file python-2.7 csv