设为首页 收藏本站
查看: 894|回复: 0

[经验分享] 删除Java源文件中全部注释的Python脚本

[复制链接]

尚未签到

发表于 2017-5-7 11:05:08 | 显示全部楼层 |阅读模式
  同事想删除一个Java项目中的全部注释(坏 DSC0000.gif ),让我帮忙想想办法。
  没找不到合适工具,就写了这个脚本,遍历指定目录,查找*.java文件,删除其中/* */之间,及// 至行末的内容。
  (用之前要改改其中的路径):
#!D:\Python32# 过滤JAVA程序中的注释# 如果字符串中有注释符号的话会有问题。import osimport reimport 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);  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-374126-1-1.html 上篇帖子: python中数字的几个小知识点 下篇帖子: Python 3.2中运行文件的步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表