Python删除Java源文件中全部注释的实现方法
本文实例讲述了Python删除Java源文件中全部注释的实现方法。分享给大家供大家参考,具体如下:
同事想删除一个Java项目中的全部注释,让我帮忙想想办法。
没找不到合适工具,就写了这个脚本,遍历指定目录,查找*.java文件,删除其中/**/之间,及//至行末的内容。
(用之前要改改其中的路径):
#!D:\Python32 #过滤JAVA程序中的注释 #如果字符串中有注释符号的话会有问题。 importos importre importio #改这个目录!!! 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; deftrim_dir(path): print("目录:"+path); forroot,dirs,filesinos.walk(path): fornameinfiles: trim_file(os.path.join(root,name)) #fornameindirs: #trim_dir(os.path.join(root,name)) deftrim_file(path): print("文件:"+path); ifre.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; forlineinfp_src.readlines(): forcinline: ifstate==S_INIT: ifc=='/': state=S_SLASH; elifc=='"''"': state=S_STR; fp_dst.write(c); else: fp_dst.write(c); elifstate==S_SLASH: ifc=='*': state=S_BLOCK_COMMENT; elifc=='/': state=S_LINE_COMMENT; else: fp_dst.write('/'); fp_dst.write(c); elifstate==S_BLOCK_COMMENT: ifc=='*': state=S_BLOCK_COMMENT_DOT; elifstate==S_BLOCK_COMMENT_DOT: ifc=='/': state=S_INIT; else: state=S_BLOCK_COMMENT; elifstate==S_LINE_COMMENT: ifc=='\n': state=S_INIT; elifstate==S_STR: ifc=='\\': state=S_STR_ESCAPE; elifc=='"': state=S_INIT; fp_dst.write(c); elifstate==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字符串操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。