当前位置: 首页 > 编程笔记 >

分析并输出Python代码依赖的库的实现代码

司徒志
2023-03-14
本文向大家介绍分析并输出Python代码依赖的库的实现代码,包括了分析并输出Python代码依赖的库的实现代码的使用技巧和注意事项,需要的朋友参考一下

用法:
分析一个脚本的依赖: analysis_dependency.py script1.py
递归分析依赖: analysis_dependency.py script1.py -r

#!/usr/bin/env python
# encoding: utf-8
# source: https://github.com/MrLYC/ycyc/blob/dev/tools/analysis_dependency.py

import ast
import importlib
import inspect


class Analysis(ast.NodeTransformer):
 def __init__(self, paths, recursion):
 self.modules = list()
 self.paths = list(paths)
 self.recursion = recursion

 def add_module(self, module):
 if module and module not in self.modules:
self.modules.append(module)
 if self.recursion:
try:
 path = inspect.getsourcefile(importlib.import_module(module))
 if path:
self.paths.append(path)
except:
pass

 def visit_Import(self, node):
 for i in node.names:
self.add_module(i.name)

 def visit_ImportFrom(self, node):
self.add_module(node.module)

 def analysis(self):
 for p in self.paths:
try:
 with open(p,"rt") as fp:
 self.visit(ast.parse(fp.read(), p))
except:
pass
 return tuple(self.modules)

if __name__ =="__main__":
 import argparse

 parser = argparse.ArgumentParser()
 parser.add_argument("paths", nargs="+")
 parser.add_argument("-r","--recursion", action="store_true", default=False)
 args = parser.parse_args()

 analysisor = Analysis(args.paths, args.recursion)
 for m in analysisor.analysis():
 print m
 类似资料:
  • 本文向大家介绍java实现输入输出流代码分享,包括了java实现输入输出流代码分享的使用技巧和注意事项,需要的朋友参考一下 1,编写一个程序,读取文件test.txt的内容并在控制台输出。如果源文件不存在,则显示相应的错误信息。 2,编写一个程序实现如下功能,从当前目录下的文件fin.txt中读取80个字节(实际读到的字节数可能比80少)并将读来的字节写入当前目录下的文件fout.txt中 3,使

  • 本文向大家介绍Python实现统计代码行的方法分析,包括了Python实现统计代码行的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现统计代码行的方法。分享给大家供大家参考,具体如下: 参加光荣之路测试开发班已三月有余,吴总上课也总问“ 咱们的课上了这么多次了大家实践了多少行代码了?”。这里是一个一脸懵逼的表情。该怎么统计呢?一个个文件数当然不可取,能用代码解决的事

  • 本文向大家介绍Python 提取dict转换为xml/json/table并输出的实现代码,包括了Python 提取dict转换为xml/json/table并输出的实现代码的使用技巧和注意事项,需要的朋友参考一下 核心代码:

  • 本文向大家介绍asp实现读取数据库输出json代码,包括了asp实现读取数据库输出json代码的使用技巧和注意事项,需要的朋友参考一下 PS:最后的参数是针对miniUI开发的,可以无视 以上就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍jsp输出当前时间的实现代码,包括了jsp输出当前时间的实现代码的使用技巧和注意事项,需要的朋友参考一下 在jsp页面中输出完整的时间,格式为"年 月 日  时:分:秒" 以上就是小编为大家带来的jsp输出当前时间的实现代码全部内容了,希望大家多多支持呐喊教程~

  • 本文向大家介绍Mybatis 传输List的实现代码,包括了Mybatis 传输List的实现代码的使用技巧和注意事项,需要的朋友参考一下 1. 当查询的参数只有一个时  1.1 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list Xml代码  1.2 如果参数的类型是Array,则在使用时,collection属性要必须指定为 array Xml代码 2. 当