python工程目录树管理

本文介绍了一个Python脚本,它通过`ast`库解析Python文件,提取类和函数信息,并生成目录树,方便工程管理。
摘要由CSDN通过智能技术生成

#python工程管理#chatgpt3#

利用windows和linux的目录树tree在对应目录下生成目录树

详情自行百度 tree  命名

# windows下目录执行 ,tree -f  可遍历当前目录下的所包含所有文件情况
tree -f
#linux同理
tree

windows下通过tree -f  >list.txt 

使用以下python脚本可获取py文件中的函数名,类名,及函数与类的层级关系


import ast

class ClassFunctionVisitor(ast.NodeVisitor):
    def __init__(self):
        self.tree = []
        self.current_class = None

    def visit_ClassDef(self, node):
        class_info = {
            'name': node.name,
            'type': 'ClassDef',
            'children': []
        }
        self.current_class = class_info
        self.tree.append(class_info)
        for item in node.body:
            if isinstance(item, ast.FunctionDef):
                func_info = {
                    'name': item.name,
                    'type': 'FunctionDef',
                    'children': []
                }
                class_info['children'].append(func_info)
                self.generic_visit(item)

    def visit_FunctionDef(self, node):
        func_info = {
            'name': node.name,
            'type': 'FunctionDef',
            'children': []
        }
        self.tree.append(func_info)

# 递归构建目录树
def build_tree(node, indent=''):
    result = ''
    for item in node:
        result += f'{indent}+ {item["name"]} -- {item["type"]} \n'
        if 'children' in item:
            result += build_tree(item['children'], indent + '  ')
    return result

def get_classes_and_functions(file_path):
    with open(file_path, 'r',encoding='utf-8') as file:
        source_code = file.read()

    tree = ast.parse(source_code)
    visitor = ClassFunctionVisitor()
    visitor.visit(tree)

    return visitor.tree

# 示例1的Python代码
file_path1 = 'yourPythonPath'
tree1 = get_classes_and_functions(file_path1)
directory_tree1 = build_tree(tree1)

print("示例1的目录树:")
print(directory_tree1)

将结果复制到excel中去就可快速获取到工程目录情况,减少手动操作

### 导入项目或模块的方法 在 Python 中,可以通过多种方式来导入其他文件中的功能以便重复利用代码。对于简单的脚本或是小型应用来说,通常会创建独立的功能函数并将其保存在一个 `.py` 文件中作为模块[^2]。 #### 使用 `import` 关键字 最常见的方式就是使用 `import` 来加载整个模块: ```python import math result = math.sqrt(16) ``` 这行命令将会把名为 `math` 的标准库模块引入当前命名空间内,并允许通过点号访问其中定义的所有属性和方法。 如果只想从特定包里获取某些部分,则可以采用如下形式: ```python from datetime import date today = date.today() ``` 这种方式只引入指定的对象到本地作用域,从而减少不必要的全局变量污染以及提高性能效率。 当涉及到更复杂的结构化应用程序时,比如具有多层目录树形结构的大规模软件开发环境,就需要考虑如何有效地管理这些依赖关系了。此时应该遵循一定的包(package)设计原则[^1]。 假设有一个按照以下路径组织起来的小型工具集: ``` my_toolkit/ │ ├── __init__.py └── utils.py ``` 为了能够顺利地引用位于子文件夹下的组件,在顶层必须存在一个空的 `__init__.py` 文件标记该位置为合法有效的Python包;之后便可以在任意地方像这样调用它内部的内容: ```python from my_toolkit.utils import some_function some_result = some_function('example argument') ``` 另外值得注意的是,有时候开发者希望某个 .py 脚本能既作为一个可执行程序运行又能在别的地方被当作常规模块引入。这时就可以借助于特殊的条件判断语句——即检查特殊内置变量 `__name__` 是否等于字符串 `"__main__"` ,以此区分两种不同的应用场景。 例如下面这段代码展示了这一机制的应用场景: ```python def main(): print("Running as standalone script") if __name__ == "__main__": main() else: print("Imported as module") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值