从未知 python 文件中提取所有 类 和函数
Extracting all classes and functions from an unknown python file
我正在使用 AST 库来提取文件的所有详细信息,
import ast
file = open("TestFile.py", "r")
f = file.read()
p = ast.parse(f)
classFunc = [node.name for node in ast.walk(p) if isinstance(node, ast.ClassDef) or isinstance(node, ast.FunctionDef)]
print classFunc
这给了我一个输出,
['adf', 'A', 'message', 'dghe', '__init__', 'mess', 'B', 'teqwtdg']
这里,'adf'和'A'是主要的class,'message'和'dghe'是'adf'下的函数,' init'和'mess'是A下的函数,'B'是'A'下的一个class,'teqwtdg'是一个'B'.
下的函数
所以,现在我的任务是编写一个 python 文件,我在其中创建 class 实例并调用这些函数(这些函数来自未知文件)。我想安排此列表,以便我可以轻松地知道哪些是主要 classes,哪些是子 classes 以及哪个函数属于哪个 class。我该怎么做?
以下代码段将遍历文件并在层次结构中创建一个对象。
import ast
import pprint
def create_py_object(node_to_traverse, current_object):
for node in node_to_traverse.body:
if isinstance(node, ast.ClassDef):
current_object.append({node.name: []})
create_py_object(node, current_object[-1:][0][node.name])
if isinstance(node, ast.FunctionDef):
current_object.append({node.name: 'func'})
file = open("TestFile.py", "r")
f = file.read()
node_to_traverse = ast.parse(f)
py_file_structure = []
create_py_object(node_to_traverse, py_file_structure)
pprint.pprint(py_file_structure)
输出:
[{'adf': [{'message': 'func'}, {'dghe': 'func'}]},
{'A': [{'__init__': 'func'}, {'mess': 'func'}, {'B': [{'teqwtdg': 'func'}]}]}]
我正在使用 AST 库来提取文件的所有详细信息,
import ast
file = open("TestFile.py", "r")
f = file.read()
p = ast.parse(f)
classFunc = [node.name for node in ast.walk(p) if isinstance(node, ast.ClassDef) or isinstance(node, ast.FunctionDef)]
print classFunc
这给了我一个输出,
['adf', 'A', 'message', 'dghe', '__init__', 'mess', 'B', 'teqwtdg']
这里,'adf'和'A'是主要的class,'message'和'dghe'是'adf'下的函数,' init'和'mess'是A下的函数,'B'是'A'下的一个class,'teqwtdg'是一个'B'.
下的函数所以,现在我的任务是编写一个 python 文件,我在其中创建 class 实例并调用这些函数(这些函数来自未知文件)。我想安排此列表,以便我可以轻松地知道哪些是主要 classes,哪些是子 classes 以及哪个函数属于哪个 class。我该怎么做?
以下代码段将遍历文件并在层次结构中创建一个对象。
import ast
import pprint
def create_py_object(node_to_traverse, current_object):
for node in node_to_traverse.body:
if isinstance(node, ast.ClassDef):
current_object.append({node.name: []})
create_py_object(node, current_object[-1:][0][node.name])
if isinstance(node, ast.FunctionDef):
current_object.append({node.name: 'func'})
file = open("TestFile.py", "r")
f = file.read()
node_to_traverse = ast.parse(f)
py_file_structure = []
create_py_object(node_to_traverse, py_file_structure)
pprint.pprint(py_file_structure)
输出:
[{'adf': [{'message': 'func'}, {'dghe': 'func'}]},
{'A': [{'__init__': 'func'}, {'mess': 'func'}, {'B': [{'teqwtdg': 'func'}]}]}]