如何获取Python文件的导入项列表?求推荐Python代码分析库
获取Python文件导入项的现成库及代码分析库推荐
一、实现导入项提取的现成方案
有现成工具可以实现你的需求,首推Python标准库中的ast模块——无需额外安装,通过解析代码的抽象语法树就能精准提取导入项。
用ast实现你要的foo函数示例:
import ast import json def foo(file_path): imports = {} with open(file_path, 'r', encoding='utf-8') as f: # 解析文件生成抽象语法树 tree = ast.parse(f.read()) # 遍历语法树节点,筛选ImportFrom类型的导入语句 for node in ast.walk(tree): if isinstance(node, ast.ImportFrom): mod_name = node.module if mod_name not in imports: imports[mod_name] = [] # 收集每个导入的别名/原名称 for alias in node.names: imports[mod_name].append(alias.name) return {file_path: imports} # 测试调用 result = foo("file1.py") print(json.dumps(result, indent=4))
运行这段代码后,就能输出你指定格式的JSON结果。
二、推荐的Python代码分析库
- ast(标准库):轻量无依赖,适合基础语法结构解析,除了提取导入,还能分析变量、函数、类等代码元素。
- pycodestyle:主打代码风格检查,但其底层解析模块也能获取导入项、代码结构等信息,适合结合风格检查做分析。
- pylint:功能全面的代码分析工具,能检测代码错误、规范问题,同时可提取所有代码结构(导入、类、函数等),适合深度代码审计。
- radon:专注代码复杂度分析,附带代码结构解析能力,能快速提取导入、函数定义等信息。
- parso:专门的Python语法解析库,对不同Python版本的兼容性更好,API更友好,适合需要处理多版本代码的场景。
内容的提问来源于stack exchange,提问作者mascai
相关产品推荐
相关产品推荐

