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的urllib库提交WEB表单
Feb 24 Python
Python字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Python中Random和Math模块学习笔记
May 18 Python
python中logging包的使用总结
Feb 28 Python
python版本单链表实现代码
Sep 28 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
python支持多线程的爬虫实例
Dec 21 Python
python json.dumps中文乱码问题解决
Apr 01 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
Jul 13 Python
pandas提升计算效率的一些方法汇总
May 30 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
推荐文章系统(一)
2006/10/09 PHP
drupal 代码实现URL重写
2011/05/04 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
Python多线程学习资料
2012/12/19 Python
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python中的集合介绍
2019/01/28 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
python中time tzset()函数实例用法
2021/02/18 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
QA工程师岗位职责
2013/11/20 职场文书
文员求职信
2014/07/15 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
升学宴学生答谢词
2015/01/05 职场文书
幼儿园感谢信
2015/01/21 职场文书
离职证明格式样本
2015/06/12 职场文书
初中语文教学研修日志
2015/11/13 职场文书