批量自动替换源码文件中的自动添加内容或者注释 或者其他特殊内容
来源:互联网 发布:网络电视需要什么设备 编辑:程序博客网 时间:2024/05/16 03:07
在通过java 反编译工具对jar进行反编译的时候,会增加很多注释,如下图:
/* */ import java.io.File;
/* */ import java.sql.Connection;
/* */ import java.sql.DatabaseMetaData;
/* */ import java.sql.DriverManager;
/* */ import java.sql.ResultSet;
/* */ import java.sql.SQLException;
/* */ import java.sql.Statement;
/* */ import java.util.ArrayList;
/* */ import sdet.fota.data.zhujin.DBReport;
/* */ import sdet.fota.data.zhujin.TableReport;
如何去掉呢? 用python的正则表达式,非常方便的去除。
这个注释,就用regex=r'/\*.*?\*/'
考虑到通用性,以及文件目录等,需要替换目录文件。就采用传参的方式,进行处理:
if __name__ == "__main__":
findString=r'/\*.*?\*/'
pos=0
filedir=sys.argv[1]
if(os.path.isdir(filedir)):
for roots,dirs,files in os.walk(filedir):
for fileName in files:
if fileName[-5:]=='.java':
fileName=roots+"\\"+fileName
print("fileName::",fileName)
main(fileName,pos,findString)
else:
main(filedir,pos,findString)
详细的实现不解释了,直接上代码:
import re
import os,sys
def main(fileName,pos,findString):
print("file Name:",fileName)
print("Pos::",pos)
print("findString:",findString)
if os.path.isfile(fileName):
newContextList=""
needModifyFlg=False
with open(fileName,mode="r",encoding="utf-8") as f:
for context in f:
newContext,flag=getNewContext(context,pos,findString)
newContextList=newContextList+newContext
if flag:
needModifyFlg=flag
if needModifyFlg:
with open(fileName,mode="w",encoding="utf-8") as f:
f.write(newContextList)
print("replace file::",fileName," OK")
else:
print("replace file::",fileName," Do not need")
return True
return False
def getNewContext(context,pos,findString):
regex=findString
match=re.search(regex,context[pos:])
if(match):
matchString=match.group()
newContext=context.replace(matchString,"",1)
#print(matchString)
#print(newContext)
return newContext,True
else:
return context,False
if __name__ == "__main__":
findString=r'/\*.*?\*/'
pos=0
filedir=sys.argv[1]
if(os.path.isdir(filedir)):
for roots,dirs,files in os.walk(filedir):
for fileName in files:
if fileName[-5:]=='.java':
fileName=roots+"\\"+fileName
print("fileName::",fileName)
main(fileName,pos,findString)
else:
main(filedir,pos,findString)
- 批量自动替换源码文件中的自动添加内容或者注释 或者其他特殊内容
- 文件内容批量替换
- 读取文件夹或者文件中的内容
- 【Shell】批量替换/删除文件中的内容
- 批量修改文件名称或者文件内容的shell脚本
- Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
- 批量替换文件夹中的内容
- 知道id或者name 替换内容 html
- linux批量替换文件内容
- Linux批量替换文件内容
- sed批量替换文件内容
- Linux批量替换文件内容
- Linux批量替换文件内容
- Linux批量替换文件内容
- MAC#批量文件内容替换
- linux批量替换文件内容
- linux 批量替换文件内容
- AndroidSutiod使用注释模版使创建文件时自动添加默认的内容
- MQTT libmosquitto源码分析
- linux grep命令详解
- 基于分布式hadoop的机器学习算法工具包
- socket编程原理
- C++ typedef
- 批量自动替换源码文件中的自动添加内容或者注释 或者其他特殊内容
- Linux学习笔记之网络管理
- LeetCode 104 Maximum Depth of Binary Tree JAVA
- Android 浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
- 设计模式之观察者模式
- bzoj1020 安全的航线flight
- Cell嵌套UITableView自动布局
- Metasploit 对 IE 浏览器的极光漏洞进行渗透利用
- 欢迎使用CSDN-markdown编辑器