【发布时间】:2016-06-15 15:40:40
【问题描述】:
暂时解决了以下问题。我发现输入文件(csv)具有导致错误的特殊字符(例如 Aimí©)。我现在手动更改字符(例如 Aimí© --> Aime)。
上一个问题:
我在写入 csv 文件时使用unicodecsv。我的程序运行顺利,直到遇到以下错误。有人可以帮忙吗?
代码:
import unicodecsv as csv
output_csv_write = open(csv_file_name_write,'w')
csv_file_write = csv.writer(output_csv_write, encoding='utf-8')
csv_file_write.writerow([An array of info])
第一个错误:
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 3-4: unexpected end of data
看到上述错误后,我尝试通过运行调试:
csv_file_write.writerow(['A','B','C'])
我收到如下第二个错误:
84 def writerow(self, row):
85 return self.writer.writerow(
---> 86 _stringify_list(row, self.encoding, self.encoding_errors))
87
88 def writerows(self, rows):
ValueError: I/O operation on closed file
【问题讨论】:
-
我在 Python 2.7.6、unicodecsv 0.14.1 中没有收到该错误。
-
@Robᵩ 我很抱歉。我只是在遇到另一个问题后才意识到它发生了。我正在修改我的问题以提供更多详细信息。
-
请提供最短的完整程序来证明您遇到的错误。由于错误与数据有关,请包含导致错误的简短样本集。请参阅minimal reproducible example 了解更多信息。
-
根据 Python 2 csv docs 由
csv模块处理的文件应该以二进制模式打开(在不同的平台上),这也适用于unicodecsv,因为这是一个替代品。 -
@Robᵩ 非常感谢您的帮助!我花了一段时间才弄清楚我的代码出了什么问题。我意识到输入文件(csv)具有导致错误的特殊字符(例如 Aimí©)。暂时,我手动更改这些字符(例如 Aimí© --> Aime)以避免问题。
标签: python csv python-unicode