分析并輸出Python代碼依賴的庫的實現(xiàn)代碼
更新時間:2015年08月09日 18:17:30 投稿:mdxy-dxy
這篇文章主要介紹了分析并輸出Python代碼依賴的庫的實現(xiàn)代碼,需要的朋友可以參考下
用法:
分析一個腳本的依賴: 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
相關文章
Python操作Excel文件的11種方法(全網(wǎng)最全)
在日常工作或開發(fā)過程中,Excel文件作為一種常用的數(shù)據(jù)存儲格式,其高效便捷的數(shù)據(jù)處理能力被廣泛應用于數(shù)據(jù)統(tǒng)計、數(shù)據(jù)分析等領域,Python作為一種強大的編程語言,提供了豐富的庫支持來實現(xiàn)對Excel文件的操作,本篇將詳細介紹如何使用Python來操作Excel文件2025-03-03
教你用Django將前端的數(shù)據(jù)存入Mysql數(shù)據(jù)庫
這篇文章主要給大家介紹了關于如何用Django將前端的數(shù)據(jù)存入Mysql數(shù)據(jù)庫的相關資料,文中通過圖文以及示例代碼介紹的非常詳細,對大家學習或者使用Django具有一定的參考學習價值,需要的朋友可以參考下2021-11-11
Python網(wǎng)絡請求使用Requests庫抓取解析數(shù)據(jù)
在網(wǎng)絡編程中,請求和接收數(shù)據(jù)是最常見的任務之一,Python的Requests庫提供了豐富的功能,使得HTTP請求變得非常簡單,在本文中,我們將了解如何使用Requests庫發(fā)起HTTP請求,并解析返回的數(shù)據(jù)2023-08-08
python網(wǎng)絡編程學習筆記(10):webpy框架
webpy小巧,簡單,實用,可以快速的完成簡單的web頁面。這里根據(jù)webpy Cookbook簡要的介紹一下webpy框架,需要的朋友可以參考下2014-06-06
Python獲取本機所有網(wǎng)卡ip,掩碼和廣播地址實例代碼
這篇文章主要介紹了Python獲取本機所有網(wǎng)卡ip,掩碼和廣播地址實例代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Python使用multiprocessing創(chuàng)建進程的方法
這篇文章主要介紹了Python使用multiprocessing創(chuàng)建進程的方法,實例分析了multiprocessing模塊操作進程的相關技巧,需要的朋友可以參考下2015-06-06

