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多线程扫描端口示例
Jan 16 Python
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
python使用pil生成图片验证码的方法
May 08 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
python3 中文乱码与默认编码格式设定方法
Oct 31 Python
python tkinter窗口最大化的实现
Jul 15 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
基于php中使用excel的简单介绍
2013/08/02 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
js控制表单操作的常用代码小结
2013/08/15 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
js中this的用法实例分析
2015/01/10 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
Python中将字典转换为列表的方法
2016/09/21 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
超简单的Python HTTP服务
2019/07/22 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
python打包多类型文件的操作方法
2020/09/21 Python
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
海南地接欢迎词
2014/01/14 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
《日月潭》教学反思
2016/02/20 职场文书
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS