You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将存储为普通字符串的Python字节字面量转为bytes对象?

将字符串形式的字节表示转换为bytes对象

推荐方案:使用ast.literal_eval

这是最安全、通用的处理方式,它仅解析Python字面量结构,不会执行任意代码,彻底避免了代码注入风险。示例代码:

import ast

byte_str = "b'moose'"
byte_obj = ast.literal_eval(byte_str)
print(type(byte_obj))  # 输出 <class 'bytes'>
print(byte_obj)        # 输出 b'moose'

该方法还能正确处理带转义序列的复杂场景,比如byte_str = "b'm\\x6fose'",转换后会得到正确的b'mose'。

局限性较大的手动处理方式

如果你的字符串格式完全固定(始终以b'开头、'结尾,且无复杂转义字符),可以手动截取内容后编码,但这种方法仅适用于简单场景:

byte_str = "b'moose'"
raw_content = byte_str[2:-1]
byte_obj = raw_content.encode('utf-8')

一旦原字符串包含\\x、\\n这类转义序列,手动处理会生成错误的bytes对象,因此不推荐作为通用方案。

绝对避免使用eval

eval虽然能实现转换,但会执行任意传入的代码,若输入来自不可信来源(比如用户输入),会引发严重的安全风险。例如:

# 危险!禁止用eval处理不可信输入
byte_str = "b'__import__('os').system('rm -rf /')'"
eval(byte_str)  # 会执行恶意系统命令

内容的提问来源于stack exchange,提问作者greenberet123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:41:08