删除c,c++,java源文件中全部注释的Python脚本

简介: #!D:\Python32 # -*- coding: utf-8-*- # 过滤JAVA程序中的注释 # 如果字符串中有注释符号的话会有问题。 import os import re import io # 改这个目录!!! top_dir = "E:\\work2\\...
#!D:\Python32
# -*- coding: utf-8-*-
# 过滤JAVA程序中的注释
# 如果字符串中有注释符号的话会有问题。

import os
import re
import io

# 改这个目录!!!
top_dir = "E:\\work2\\";

# 状态
S_INIT              = 0;
S_SLASH             = 1;
S_BLOCK_COMMENT     = 2;
S_BLOCK_COMMENT_DOT = 3;
S_LINE_COMMENT      = 4;
S_STR               = 5;
S_STR_ESCAPE        = 6;

def trim_dir(path):
  print("dir:" + path);
  for root, dirs, files in os.walk(path):
    for name in files:
      trim_file(os.path.join(root, name))
      
    #for name in dirs:
      #trim_dir(os.path.join(root, name))

def trim_file(path):
  print("file:" + path);
  if re.match(r".*?\.(java|c|cpp|h)$", path):
    print("process");
  else:
    print("ignore");
    return;

  bak_file = path + ".bak";
  try:
    os.rename(path, bak_file);
  except:
    print "bak except",bak_file;

  fp_src = open(bak_file);
  fp_dst = open(path, 'w');
  state = S_INIT;
  for line in fp_src.readlines():
    for c in line:
      if state == S_INIT:
        if c == '/':
          state = S_SLASH;
        elif c == '"':
          state = S_STR;
          fp_dst.write(c);
        else:
          fp_dst.write(c);
      elif state == S_SLASH:
        if c == '*':
          state = S_BLOCK_COMMENT;
        elif c == '/':
          state = S_LINE_COMMENT;
        else:
          fp_dst.write('/');
          fp_dst.write(c);
          state=S_INIT;
      elif state == S_BLOCK_COMMENT:
        if c == '*':
          state = S_BLOCK_COMMENT_DOT;
      elif state == S_BLOCK_COMMENT_DOT:
        if c == '/':
          state = S_INIT;
        elif c=='*':
          state=S_BLOCK_COMMENT_DOT; #再次碰到*号还是要继续状态,否则会出错
        else:
          state = S_BLOCK_COMMENT;
      elif state == S_LINE_COMMENT:
        if c == '\n':
          state = S_INIT;
          fp_dst.write(c);
      elif state == S_STR:
        if c == '\\':
          state = S_STR_ESCAPE;
        elif c == '"':
          state = S_INIT;
        fp_dst.write(c);
      elif state == S_STR_ESCAPE:
        # 这里未完全实现全部序列,如\oNNN \xHH \u1234 \U12345678,但没影响
        state = S_STR; 
        fp_dst.write(c);

  fp_src.close();
  fp_dst.close();
  #os.remove(bak_file);
trim_dir(top_dir);

  需要说明的是这段程序来自:http://blog.csdn.net/codearhat/article/details/6852483#comments

但是里面有两个问题,会引起错误,现在经验证可以在我的项目中使用,但是不保证完全没有错误,有错误希望和我联系,也可以和原作者联系

目录
相关文章
|
13天前
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
|
25天前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
51 14
|
30天前
|
算法 Java API
Java 方法注释:规范、实用和高质量的写法
本文深入探讨了如何编写高质量的 Java 方法注释
53 11
|
30天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
39 0
|
1月前
|
存储 算法 安全
基于哈希表的文件共享平台 C++ 算法实现与分析
在数字化时代,文件共享平台不可或缺。本文探讨哈希表在文件共享中的应用,包括原理、优势及C++实现。哈希表通过键值对快速访问文件元数据(如文件名、大小、位置等),查找时间复杂度为O(1),显著提升查找速度和用户体验。代码示例展示了文件上传和搜索功能,实际应用中需解决哈希冲突、动态扩容和线程安全等问题,以优化性能。
|
2月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
234 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
2月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
213 61
|
2月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
178 5
|
2月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
119 34
|
2月前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
129 7
21个Python脚本自动执行日常任务(2)

推荐镜像

更多