【问题标题】:Ignoring escape sequences忽略转义序列
【发布时间】: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


【解决方案1】:

考虑到所有 cmets,它看起来像是错误地使用了 PIL/Pillow API,即需要 文件名 而不是文件数据的 Image.open 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2011-07-11
    • 1970-01-01
    • 2021-03-02
    • 2018-02-24
    相关资源
    最近更新 更多