python通过脚本路径获取对应脚本里的内容
test.py
class A: def a(self): pass @staticmethod def b(): pass @classmethod def c(cls): pass @property def d(self): return 1 e = 1 def f(): pass
test2.py
import inspect import os from importlib.util import spec_from_file_location, module_from_spec script_path = "test.py" def get_members_from_file(file_path: str, name="module"): if os.path.exists(file_path): spec = spec_from_file_location(name, file_path) module = module_from_spec(spec) spec.loader.exec_module(module) members = inspect.getmembers(module, lambda member: not inspect.ismodule(member)) members_list = [] for name, value in members: if not name.startswith('_'): info = {"name": name, "value": value} if inspect.isclass(value): info["type"] = "class" class_members = [] for k, v in vars(value).items(): if not k.startswith("_"): class_member_info = {"name": k, "value": v, "type": v.__class__.__name__} class_members.append(class_member_info) info["class_members"] = class_members else: info["type"] = value.__class__.__name__ members_list.append(info) return members_list else: raise Exception(f"file_path={file_path} not exist") print(get_members_from_file(script_path))