我得到的输入文件只包含一个类定义(类只是常量容器,包含 json 的键,类似的文件在 Java 客户端上用于解码 json)看起来像:
class Constants(object):
VERSION= 'version'
OS = 'os'
PROGRAM = 'program'
# more constants .....
如何获取常量中定义的所有属性的字典,如何将文件解析为字典? 我想压缩 key 并生成具有相同常量 key 但更短 key 的新 .py 和 .java 文件。
最佳答案
- 导入模块
- 我用了
imp.load_module
在以下代码中代替__import__
来导入任意文件路径。
- 我用了
- 找到类对象。
- 使用
vars
迭代类属性:
import imp
path = '/path/to/file'
with open(path, 'U') as f:
mod = imp.load_module('temporary', f, path, ('.py', 'U', imp.PY_SOURCE))
builtins = vars(__builtins__)
cls = next(value for name, value in vars(mod).items() if name not in builtins)
const_dict = {name: value for name, value in vars(mod.Constants).items()
if not name.startswith('_')}
print(const_dict)
# => {'OS': 'os', 'VERSION': 'version', 'PROGRAM': 'program'}
在 Python 2.7.6、3.3.2、3.4.0b2 上测试。
关于python - 如何从包含类定义的 .py 文件中获取属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21165103/