Python生成java项目文件系统树并提取文档注释(支持多模块)

6 篇文章 0 订阅
4 篇文章 0 订阅

这里的文档注释能提取格式为下面这两种:

import os
import re

def get_comment_from_file(file_path):
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            content = file.read()
            menu_match = re.search(r'\@menu\s+(.+)', content)
            if menu_match:
                return menu_match.group(1).strip()
            else:
                personal_info_match = re.search(r'/\*\*\n\s+\*\s+(.+)\n\s+\*', content)
                if personal_info_match:
                    comment = personal_info_match.group(1).strip()
                    if not comment.startswith("@Author"):
                        return comment
                return "个人信息 业务处理"
    except Exception as e:
        print(f"Error reading {file_path}: {e}")
        return None

def print_directory_contents(path, output_file, prefix=''):
    if os.path.isdir(path):
        for item in os.listdir(path):
            item_path = os.path.join(path, item)
            if os.path.isdir(item_path):
                if 'target' not in item_path.split(os.path.sep):
                    output_file.write(f"{prefix}├── {item}\n")
                    new_prefix = prefix + "│   "
                    print_directory_contents(item_path, output_file, new_prefix)
            else:
                if item.endswith('.java'):
                    comment = get_comment_from_file(item_path)
                    if comment:
                        output_file.write(f"{prefix}│   ├── {item}  // {comment}\n")
                else:
                    # 对于非Java文件,仅输出文件名
                    output_file.write(f"{prefix}│   ├── {item}\n")
    else:
        comment = get_comment_from_file(path)
        if path.endswith('.java') and comment:
            output_file.write(f"{prefix}├── {os.path.basename(path)}  // {comment}\n")
        else:
            # 对于单个非Java文件的情况
            output_file.write(f"{prefix}├── {os.path.basename(path)}\n")

# 替换以下路径为你的目标文件夹路径
folder_path = "D:\\yingchong\\wms-product-master"
output_path = "D:\\yingchong\\directory_structure.txt"

with open(output_path, 'w', encoding='utf-8') as output_file:
    print_directory_contents(folder_path, output_file)

效果如图:

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python去除Java文件中的注释,可以使用正则表达式和字符串处理的方法。 首先,我们可以使用正则表达式来匹配Java注释的模式。Java注释有两种形式:行注释(以双斜线“//”开始)和块注释(以“/*”开始,以“*/”结束)。我们可以使用正则表达式“//.*|/\*.*?\*/”来匹配注释的模式。 接下来,我们需要读取Java文件的内容,并使用正则表达式匹配注释的模式,并将匹配到的注释替换为空字符串。可以使用Python的re模块来实现正则表达式操作。 下面是一个简单的Python代码示例,演示了如何去除Java文件中的注释: ```python import re def remove_comments(file_path): # 读取Java文件内容 with open(file_path, 'r') as file: content = file.read() # 使用正则表达式匹配注释模式并替换为空字符串 content = re.sub(r'//.*|/\*.*?\*/', '', content, flags=re.S) # 将处理后的内容写回Java文件 with open(file_path, 'w') as file: file.write(content) # 调用示例 java_file_path = 'example.java' remove_comments(java_file_path) ``` 以上代码中,我们定义了一个`remove_comments`函数,接受Java文件的路径作为参数。函数内部使用`open`函数读取文件内容,并使用`re.sub`函数替换匹配的注释模式为空字符串。最后,将处理后的内容写回Java文件。 注意:这只是一个简单的实现示例,不能处理所有可能的情况。对于复杂的注释模式或特殊情况,可能需要进一步优化或修改正则表达式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值