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 10 Python
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Python字符串拼接六种方法介绍
Dec 18 Python
Java及python正则表达式详解
Dec 27 Python
python 筛选数据集中列中value长度大于20的数据集方法
Jun 14 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
python自动化测试之如何解析excel文件
Jun 27 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
python实现飞行棋游戏
Feb 05 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实现的错误处理封装类实例
2017/06/20 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
python GUI实例学习
2017/11/21 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
医校毕业生自我鉴定
2014/01/25 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
大学生社会实践感想
2015/08/11 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书