gpt4 book ai didi

python - UnicodeDecodeError 仅适用于 cx_freeze

转载 作者:行者123 更新时间:2023-11-28 23:05:33 31 4
gpt4 key购买 nike

我收到错误:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 7338: ordinal not in range(128)” 一旦我在卡住后尝试运行程序我的脚本与 cx_freeze。如果我正常运行 Python 3 脚本,它运行良好,但只有在我卡住它并尝试运行可执行文件后,它才会给我这个错误。我会发布我的代码,但我不知道到底要发布哪些部分,所以如果有任何特定部分可以帮助我,我会发布它们,否则我以前好像遇到过这个问题并解决了它,但已经有一段时间了,我不记得到底是什么问题或者我是如何解决它的,所以任何帮助或指导让我朝着正确的方向前进都会有很大帮助。提前致谢。

最佳答案

确切地告诉我们什么平台上的 Python 版本。

显示错误发生时获得的完整回溯。你自己看吧。出现的代码的最后一行是什么?您认为正在解码的 bytes 字符串是什么?为什么要使用 ascii 编解码器??

请注意,使用默认编解码器(例如 ascii)自动将 bytes 转换为 str 不是由 Python 3.x 完成的。所以要么你明确地这样做,要么 cx_freeze 是。

在评论中提供更多信息后更新

Excel 不会以 ASCII 格式保存 csv 文件。它将它们保存在 MS 所谓的“ANSI 代码页”中,该代码页因区域设置而异。如果你不知道你的是什么,它可能是 cp1252。要检查,请执行以下操作:

>>> import locale; print(locale.getpreferredencoding())
cp1252

如果 Excel 确实以 ASCII 格式保存文件,您的违规 '\xa0' 字节将被替换为 '?'并且您不会收到 UnicodeDecodeError。

将文件保存为 UTF-8 需要您使用 encoding='utf8' 打开文件,并且会遇到同样的问题(除了您会得到关于 0xc2 而不是 0xa0 的提示)。

您不需要将所有四个 csv 文件都发布到网络上。只需运行这个小脚本(未经测试):

import sys
for filename in sys.argv[1:]:
for lino, line in enumerate(open(filename), 1):
if '\xa0' in line:
print(ascii(filename), lino, ascii(line))

'\xa0' 是一个 NO-BREAK SPACE 又名   ...您可能想要编辑您的文件以更改这些到普通空间。

您可能需要在 cx_freeze 邮件列表上询问,以获得发生此错误的原因的答案。他们会想知道完整的追溯。进行一些练习 - 在这里展示。

顺便说一下,“偏移量 7338”相当大——您希望 csv 文件中的行有那么长吗?也许有些东西正在读取您的所有文件...

关于python - UnicodeDecodeError 仅适用于 cx_freeze,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5916711/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com