gpt4 book ai didi

python - 获取 Python 模块的有序属性列表

转载 作者:太空狗 更新时间:2023-10-29 17:20:33 28 4
gpt4 key购买 nike

我需要检索 Python 模块的属性列表。

要注意的是,这就是这个问题的不同之处,例如来自 this one ,是我希望列表按照它们在模块中出现的顺序排序。

举个例子,考虑模块

# a_module.py
b1 = 1
a0 = 1
a1 = 2

我想要列表 ['b1', 'a0', 'a1']

我尝试过的:

>>> import a_module
>>> dir(a)
[..., 'a0', 'a1', 'b1']

>>> from inspect import getmembers
>>> [x[0] for x in getmembers(a_module)]
[..., 'a0', 'a1', 'b1']

有没有办法不用解析文件就可以得到列表?

最佳答案

是的,您必须解析文件。你不必编写自己的解析器,你可以使用 ast图书馆。

使用您的示例文件

# a_module.py
b1 = 1
a0 = 1
a1 = 2

您可以通过这种方式解析属性。

import ast

members = []
with open('file.py', 'r') as f:
src = f.read()

tree = ast.parse(src)

for child in tree.body:
if isinstance(child, ast.Assign):
for target in child.targets:
members.append(target.id)

print members
# ['b1', 'a0', 'a1']

这个小脚本只查看顶级属性。它忽略了导入、类和函数定义之类的东西。根据要从已解析文件中提取的信息量,您可能有更复杂的逻辑。

关于python - 获取 Python 模块的有序属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35238964/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com