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的pandas框架操作Excel文件中的数据教程
Mar 31 Python
python 字典修改键(key)的几种方法
Aug 10 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Python定时器线程池原理详解
Feb 26 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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计算数组不为空元素个数的方法
2014/01/27 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
JS 继承实例分析
2008/11/04 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
JS实现简易日历效果
2021/01/25 Javascript
Python 常用的安装Module方式汇总
2017/05/06 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
Pandas的Apply函数具体使用
2020/07/21 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
what is the difference between ext2 and ext3
2015/08/25 面试题
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
文化宣传方案
2014/03/13 职场文书
迟到检讨书
2015/01/26 职场文书
员工表扬信怎么写
2015/05/05 职场文书
钱学森观后感
2015/06/04 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
汉语拼音教学反思
2016/02/22 职场文书