在日常开发和学习中,Python代码中的注释有时会影响代码的阅读体验或者我们需要让我们的代码看着很厉害让别人看不懂所以我开发了一个轻量级的注释清理工具,帮助开发者快速生成干净的代码版本。

工具特性

智能识别注释类型​

基于Python标准库tokenize模块解析代码结构,智能区分真实注释与字符串中的相似符号,避免误删代码内容。

安全处理机制​

  • 自动生成_clean.py后缀的新文件

  • 完善的异常捕获机制

  • 中文错误提示更友好

实现原理

  1. 将代码转为字节流并生成token序列

  2. 过滤所有COMMENT类型的token

  3. 重组非注释token还原有效代码

代码

import tokenize
from io import BytesIO


def remove_comments(code):
    cleaned_code = []
    try:
        tokens = tokenize.tokenize(BytesIO(code.encode('utf-8')).readline)
        for tok_type, tok_str, _, _, _ in tokens:
            if tok_type != tokenize.COMMENT:  # 仅过滤注释
                cleaned_code.append((tok_type, tok_str))
    except tokenize.TokenError:
        pass  # 忽略语法错误导致的异常

    # 重构代码字符串
    return tokenize.untokenize(cleaned_code).decode('utf-8')


if __name__ == "__main__":
    input_file = input("请输入Python文件路径(例如:example.py): ").strip()
    try:
        with open(input_file, 'r', encoding='utf-8') as f:
            original_code = f.read()

        cleaned_code = remove_comments(original_code)
        output_file = input_file.replace('.py', '_clean.py')

        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(cleaned_code)

        print(f"[成功] 注释已清除,结果保存至: {output_file}")

    except FileNotFoundError:
        print(f"[错误] 文件未找到: {input_file}")
    except Exception as e:
        print(f"[错误] 发生异常: {str(e)}")