折腾:
期间,用代码: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

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:
即可。