Python删除Java源文件中全部注释的实现方法


Posted in Python onAugust 30, 2017

本文实例讲述了Python删除Java源文件中全部注释的实现方法。分享给大家供大家参考,具体如下:

同事想删除一个Java项目中的全部注释,让我帮忙想想办法。

没找不到合适工具,就写了这个脚本,遍历指定目录,查找*.java文件,删除其中/* */之间,及// 至行末的内容。

(用之前要改改其中的路径):

#!D:\Python32
# 过滤JAVA程序中的注释
# 如果字符串中有注释符号的话会有问题。
import os
import re
import io
# 改这个目录!!!
top_dir = "E:\\java_comments_trim\\";
# 状态
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("目录:" + 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("文件:" + path);
 if re.match(".*java{1}quot;, path):
  print(" 处理");
 else:
  print(" 忽略");
  return;
 bak_file = path + ".bak";
 os.rename(path, 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);
   elif state == S_BLOCK_COMMENT:
    if c == '*':
     state = S_BLOCK_COMMENT_DOT;
   elif state == S_BLOCK_COMMENT_DOT:
    if c == '/':
     state = S_INIT;
    else:
     state = S_BLOCK_COMMENT;
   elif state == S_LINE_COMMENT:
    if c == '\n':
     state = S_INIT;
   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();
trim_dir(top_dir);

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python装饰器使用实例:验证参数合法性
Jun 24 Python
Python实现telnet服务器的方法
Jul 10 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
Python 递归函数详解及实例
Dec 27 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 Python
python生成任意频率正弦波方式
Feb 25 Python
python实现ssh及sftp功能(实例代码)
Mar 16 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
python动态规划算法实例详解
Nov 22 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 #Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 #Python
Python导入模块时遇到的错误分析
Aug 30 #Python
简单学习Python多进程Multiprocessing
Aug 29 #Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 #Python
Python实现文件内容批量追加的方法示例
Aug 29 #Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 #Python
You might like
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
Json解析的方法小结
2016/06/22 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
js实现分页功能
2017/05/24 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
设计模式的基本要素是什么
2014/04/21 面试题
小学生自我评价范例
2013/09/24 职场文书
室内设计专业个人的自我评价
2013/10/19 职场文书
岗位说明书标准范本
2014/07/30 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
小学生交通安全寄语
2015/02/27 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
培训简讯范文
2015/07/20 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python