如何编写Python函数返回存储常量字典的指定.py文件的内容
实现方案说明
最优实现分两种场景选择:
1. 本地使用/无需复杂传输:直接返回文本内容
这是最常用的轻量方案,读取原.py文件的文本内容直接返回,外部要生成.py文件直接写入即可,完全兼容后续导入使用的需求,示例代码如下:
import os # 提前配置你存放所有常量.py文件的目录 CONSTANT_FILE_ROOT = "./constant_py_files" def get_constant_py_content(file_name: str) -> str | None: # 自动补全.py后缀,避免传参漏写 if not file_name.endswith(".py"): file_name = f"{file_name}.py" target_file_path = os.path.join(CONSTANT_FILE_ROOT, file_name) # 校验文件存在性 if not os.path.isfile(target_file_path): return None # 读文件返回内容 with open(target_file_path, "r", encoding="utf-8") as f: return f.read() # 外部生成.py文件示例 content = get_constant_py_content("car_info") if content: with open("./my_car_const.py", "w", encoding="utf-8") as f: f.write(content) # 生成后直接import my_car_const就能用里面的字典
2. 需要网络传输/非文本存储:返回bytes格式
你说的内部转bytes、外部还原的方案是完全可行的,不会有任何内容损耗,还原后的文件和原文件完全一致,不影响后续导入使用,示例代码如下:
import os CONSTANT_FILE_ROOT = "./constant_py_files" def get_constant_py_bytes(file_name: str) -> bytes | None: if not file_name.endswith(".py"): file_name = f"{file_name}.py" target_file_path = os.path.join(CONSTANT_FILE_ROOT, file_name) if not os.path.isfile(target_file_path): return None # 二进制读取直接返回bytes with open(target_file_path, "rb") as f: return f.read() # 外部还原为.py文件示例 file_bytes = get_constant_py_bytes("car_info") if file_bytes: with open("./my_car_const.py", "wb") as f: f.write(file_bytes)
额外说明
- 两个方案都不会修改原文件的内容,生成的新文件和原文件导入效果完全一致
- 如果你不需要生成物理文件,也可以通过
importlib模块直接加载返回的文本内容,内存中就能导入使用里面的常量字典,不需要写磁盘
内容的提问来源于stack exchange,提问作者topcan5
相关产品推荐
相关产品推荐

