【发布时间】:2015-05-29 15:15:19
【问题描述】:
我正在使用 Python 2.6,并且我有一个包含字符串的变量(我已经通过套接字发送它,现在我想用它做点什么)。 问题是我收到以下错误:
TypeError: file() 参数 1 必须是没有 NULL 字节的编码字符串,而不是 str
查找后我发现问题可能是我发送的字符串包含 '\0' 但它不是文字字符串,我可以使用双反斜杠或添加 'r' 进行编辑事先,那么有没有办法告诉python忽略转义序列并将整个事情视为字符串?
(例如 - 我不希望 python 将序列 \0 视为空字符,而是希望将其视为反斜杠字符后跟零字符)
【问题讨论】:
-
你为什么不能只做
s.replace('\0', '')(假设s是你的字符串)?在 Python 2.7 中,chr(0).replace('\0', '')为我返回空字符串。 -
@Two-BitAlchemist 我已经将图像转换为字符串,现在我正试图通过互联网发送它,因此我无法直接访问字符串本身。我不想用空字符串替换 \0,我希望 python 将其视为反斜杠字符后跟零字符。
-
你对你的字符串了解多少?它是否包含“\0”作为其最后一个字符?也许你可以在这里显示
repr(s)。 -
当此类字符串用作文件名而不是文件内容时出现报告的错误消息。
-
过程如下: - 我将一张图片保存到一个StringIO对象。 - 我使用 base64 对对象的值进行编码。 - 我使用套接字发送它|||之后我是: - 使用套接字接收整个字符串 - 使用 base64 解码字符串。 - 尝试使用 Image.open() 函数打开图像。 --> 这里我得到了我上面发布的错误。
标签: python string null escaping backslash