如何从环境变量获取字节格式数据且不转换为字符串
解决环境变量读取字节格式数据的问题
问题本质
环境变量和.env文件存储的都是纯字符串,所以你写入的"b'23od0403kjdj4'"会被完整读取为字符串,直接转字节自然会带上外层的b'和'。下面是几种可靠的解决方法:
方法1:手动提取内容后编码
直接截取字符串中b'和'之间的部分,再编码为字节:
import os # 从环境变量读取字符串 pwd_str = os.getenv("ENCRYPTED_PWD") # 提取引号内的核心内容并转字节 pwd = pwd_str[2:-1].encode('utf-8') print(pwd) # 输出 b'23od0403kjdj4'
方法2:用ast.literal_eval解析Python字面量
ast.literal_eval可以安全解析合法的Python字面量,直接把字符串形式的字节对象转为真实的字节:
import os import ast pwd_str = os.getenv("ENCRYPTED_PWD") pwd = ast.literal_eval(pwd_str) print(pwd) # 输出 b'23od0403kjdj4'
最优方案:修改.env存储方式
最省心的方式是不在.env里写b'xxx'格式,直接存储原始字符串:
# .env文件中直接写 ENCRYPTED_PWD=23od0403kjdj4
读取时直接编码为字节:
import os pwd = os.getenv("ENCRYPTED_PWD").encode('utf-8') print(pwd) # 输出 b'23od0403kjdj4'
内容的提问来源于stack exchange,提问作者ThunderCloud
相关产品推荐
相关产品推荐

