python写入错误处理_【已解决】python中用codecs去写入csv出错:io.UnsupportedOperation: write...

折腾:

期间,用代码:import csv

import codecs

def saveInvalidSentence(mongoId, sentence, invalidReason):

"""save invalid sentence and invalid reason"""

global gCurInvalidSentenceFullFilename, gInvalidSentenceCsvHeaders

if "," in sentence:

logging.warning("Need know how to save it")

rowDict = {

"MongoID": mongoId,

# "Reason": str(invalidReason),

"Reason": invalidReason.name,

"Sentence": sentence

}

rowValueList = [mongoId, invalidReason.name, sentence]

with codecs.open(gCurInvalidSentenceFullFilename, "r", encoding="utf-8") as csvFp:

csvListWriter = csv.writer(csvFp)

csvListWriter.writerow(rowValueList)

csvDictWriter = csv.DictWriter(csvFp, fieldnames=gInvalidSentenceCsvHeaders)

csvDictWriter.writerow(rowDict)

结果出错:  File "/Users/crifan/dev/xxx/processData/mysqlQa/mongoDialogToMysqlQa.py", line 295, in insertDialog

saveInvalidSentence(mongoId, invalidSentence, invalidReason)

File "/Users/crifan/dev/dev_root/xxx/processData/mysqlQa/mongoDialogToMysqlQa.py", line 237, in saveInvalidSentence

csvListWriter.writerow(rowValueList)

File "/Users/crifan/.virtualenvs/xx-gXiJ4vtz/bin/../lib/python3.6/codecs.py", line 720, in write

return self.writer.write(data)

File "/Users/crifan/.virtualenvs/xx-gXiJ4vtz/bin/../lib/python3.6/codecs.py", line 377, in write

self.stream.write(data)

io.UnsupportedOperation: write

378afde6a674dfb388f721d3ba565c8f.png

python csv codes io.UnsupportedOperation: write

python csv codecs io.UnsupportedOperation: write

去改为w:with codecs.open(gCurInvalidSentenceFullFilename, "w", encoding="utf-8") as csvFp:

结果即可。

【总结】

此处Python中用codecs去open文件,但是write出错:

io.UnsupportedOperation: write

原因是不小心是设置了r的mode:    with codecs.open(gCurInvalidSentenceFullFilename, "r", encoding="utf-8") as csvFp:

改为w:    with codecs.open(gCurInvalidSentenceFullFilename, "w", encoding="utf-8") as csvFp:

即可。


版权声明:本文为weixin_39757212原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。