如何正确读取含b-string格式的TXT文件,还原原始二进制字符串?
解决方案
你的TXT文件实际存储的是二进制对象的字符串表示(即repr(b'xxx')的输出结果),而非原始二进制数据,所以直接读取会保留外层的b''和转义字符。要还原成目标二进制对象,可按以下步骤处理:
- 用文本模式读取文件内容,去除多余的首尾空白/换行
- 使用
ast.literal_eval安全解析字符串,还原为真实的bytes对象
示例代码
import ast with open('raw2.txt', 'r') as f: # 读取文件内容并清理首尾的空白、换行符 content = f.read().strip() # 解析字符串为真实的bytes对象 target_bytes = ast.literal_eval(content)
执行后,target_bytes的值就是你需要的b'111\r\n222\r\n333'。
注意事项
- 不要使用
eval()代替ast.literal_eval():eval()会执行任意代码,存在安全风险;ast.literal_eval()仅解析Python字面量(如bytes、字符串、列表等),安全性更高。
内容的提问来源于stack exchange,提问作者sportul
相关产品推荐
相关产品推荐

