导出python源码的函数调用关系图的方法


  其实准确的说是类图,经过实践不能导出函数的调用关系,如果读者谁做到函数的调用关系图,请分享给大家。详述如下:

1. pycallgraph+graphviz

  需要修改源码,在源码中加入pycallgraph代码,用于导出函数调用关系描述语言。该方法因为需要修改源码,不适合大工程。详情可参考mb5fdb1266ce6df的文章Python小屋屋主的文章)。

2. pyreverse+graphviz

  该方法不需要修改源码,演示效果也很好。具体操作参考:生成项目UML框架图-pyreverse介绍将Python源码自动生成UML类图python的UML类图自动生成工具–pyreverse安装和使用这三篇博客。
下面是两条常用指令:

pyreverse -f ALL -ASmy ./train.py
pyreverse --module-names=y -ASmy ./train.py

3. pycharm(推荐)

  最推荐的一种方式,效果很好,操作很傻瓜,具体方法如下:(引用自草票其问答中的回复)
  生成python脚本类图的最简单方法是使用Pycharm IDE。 第1步:为python脚本创建一个包(Alt + Insert→Python包) 第2步:右键单击创建的包文件,然后选择选项图 第3步:选择图表选项后,您可以选择顶部的选项来添加方法 更多信息:https://confluence.jetbrains.com/display/PYH/Working+with+UML+class+diagrams+in+PyCharm

4. starUML

实验过不行,因为至今(2022年4月12日),其python的插件还不支持逆向生成python的UML图,但是C++可以(tools -> C++ -> Reverse Code … -> 选择头文件)。

5. EnterpriseArchitecture(推荐)

可以参考如下教程:

  1. EA15逆向工程操作–从源码生成类图
  2. EA Reverse Engineering C++ Source Code
  3. enterprise architect (EA) 源码生成UML类图,帮助理解项目工程
  4. 用EA(EnterpriseArchitect)将C++的.h文件转换成UML类图
  5. 使用Sparx Systems Enterprise Architect将python源代码转换为uml图
  6. 用Enterprise Architect从源码自动生成类图(附图+工具)

6. Visual Paradigm(未尝试)

参考如下教程:

Visual Paradigm Reverse Engineering C++ Source Code

7. Eric Python IDE(未尝试)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要用 Python 获取银行联行号,您需要找到一个数据,并使用 Python 进行爬取和处理。通常,银行联行号数据可以在政府网站或金融机构网站上获得,您可以使用 Python 中的爬虫库(如 BeautifulSoup)进行爬取。 在处理完数据之后,您可以使用 Python 中的库(如 pandas)将数据存储到 DataFrame 中,并使用 pandas 的 to_excel 方法将数据导出到 Excel 文件中。 代码示例: ``` import requests from bs4 import BeautifulSoup import pandas as pd # 获取数据 url = "https://www.example.com/bank-codes" res = requests.get(url) soup = BeautifulSoup(res.text, "html.parser") # 处理数据 bank_codes = [] table = soup.find("table") for row in table.find_all("tr"): cols = row.find_all("td") if len(cols) >= 2: bank_name = cols[0].text.strip() bank_code = cols[1].text.strip() bank_codes.append([bank_name, bank_code]) # 将数据存储到 DataFrame 中 df = pd.DataFrame(bank_codes, columns=["银行名称", "银行联行号"]) # 导出到 Excel 文件中 df.to_excel("bank_codes.xlsx", index=False) ``` 请注意,此代码仅作为示例,实际情况可能有所不同,您需要根据您所使用的数据进行相应的修改。 ### 回答2: 用Python获取银行联行号并导出到Excel文件需要以下步骤: 1. 导入所需模块:使用Python,我们需要导入一些模块,如`requests`用于发送HTTP请求,`beautifulsoup4`用于爬取网页数据,`openpyxl`用于操作Excel文件。 2. 发送HTTP请求获取网页数据:使用`requests`模块发送HTTP请求,访问包含银行联行号的网页,并获取到网页的HTML内容。 3. 解析网页数据:使用`beautifulsoup4`模块解析网页的HTML内容,找到包含银行联行号的表格或列表。 4. 提取银行联行号:根据网页的结构,使用`beautifulsoup4`模块提取出银行联行号,并将其保存到一个列表或字典中。 5. 创建并操作Excel文件:使用`openpyxl`模块创建一个新的Excel文件,设置表头和列的名称。遍历银行联行号列表或字典,将数据写入Excel文件的相应单元格。 6. 保存Excel文件:将完成数据写入Excel文件后,使用`openpyxl`模块保存Excel文件,生成最终的导出文件。 以上是基本的步骤,具体代码可以根据实际需求进行调整和优化。这个过程需要一定的Python编程基础和对相关模块的了解。 ### 回答3: 要通过Python获取银行联行号并导出到Excel文件,可以采用以下步骤: 1. 导入所需的Python库,如pandas、openpyxl和requests。 ```python import pandas as pd import openpyxl import requests ``` 2. 创建一个函数,用于获取银行联行号。这可以通过调用一个提供银行数据的API来实现。以下是一个示例函数: ```python def get_bank_info(bank_name): api_url = "https://api.example.com/bank_info" params = {"name": bank_name} response = requests.get(api_url, params=params) bank_info = response.json() return bank_info["bank_code"] ``` 这个函数接受银行名称作为参数,并返回对应的银行联行号。 3. 创建一个空的数据框,用于保存银行名称和联行号。 ```python bank_data = pd.DataFrame(columns=["银行名称", "联行号"]) ``` 4. 循环遍历需要查询的银行列表,并调用上述函数获取联行号,并将结果添加到数据框中。 ```python bank_list = ["工商银行", "建设银行", "中国银行"] for bank in bank_list: bank_code = get_bank_info(bank) bank_data = bank_data.append({"银行名称": bank, "联行号": bank_code}, ignore_index=True) ``` 5. 将数据框保存为Excel文件。 ```python bank_data.to_excel("bank_info.xlsx", index=False) ``` 以上代码将数据保存为名为"bank_info.xlsx"的Excel文件,index=False表示不保存索引列。 完整的代码示例: ```python import pandas as pd import openpyxl import requests def get_bank_info(bank_name): api_url = "https://api.example.com/bank_info" params = {"name": bank_name} response = requests.get(api_url, params=params) bank_info = response.json() return bank_info["bank_code"] bank_data = pd.DataFrame(columns=["银行名称", "联行号"]) bank_list = ["工商银行", "建设银行", "中国银行"] for bank in bank_list: bank_code = get_bank_info(bank) bank_data = bank_data.append({"银行名称": bank, "联行号": bank_code}, ignore_index=True) bank_data.to_excel("bank_info.xlsx", index=False) ``` 运行以上代码后,将在当前目录下生成一个名为"bank_info.xlsx"的文件,其中包含了从API获取的银行联行号的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值