python脚本替换指定行实现步骤


Posted in Python onJuly 11, 2017

 python脚本替换指定行实现步骤

       本文主要介绍了Python的脚本替换,由于工作的需要,必须对日志系统进行更新,这里在网上搜索到一篇文章比较不错,这里记录下,大家可以参考下,

工作中需要迁移代码,并把原来的日志系统更新到现在的格式,原来获取log的格式是

AuctionPoolLoggerUtil.getLogger()

现在获取log的格式是:

LoggerFactory.getLogger(XXXXX.class)

这里的XXXXX需要替换为当前的类名。如果这样的java文件不多还好,可以一个个人肉替换。一旦这样的文件很多,特别是迁移过来大量的文件时,你就会发现简直是一场灾难。其实我们发现上面的工作很多是机械单调的。ide中的替换功能不能做到的是把XXXXX替换成当前的类名。而python很容易处理文本,利用正则表达式可以比较方便的拿到类名,然后替换掉xxxxx就可以了。

实现代码:

import fileinput 
import os 
import re 
 
__author__ = 'ykdsg' 
 
packDir='/Users/ykdsg/svn_workspace/auctionplatform/misc_refactory/auctionplatform/ap-biz/src/main/java/com/yk/misccenter' 
#查找class name 
findClassNameP=re.compile(r"(?<=class\s)\w*") 
findXP=re.compile(r"XXXXX") 
 
 
def processDirectory(args,dirname,filenames): 
  # print 'Directory',dirname 
  for filename in filenames: 
 
    if os.path.splitext(filename)[1]=='.java': 
      # print 'file',filename 
      fullFileUrl=dirname+ "/"+filename 
      fileObj=open(fullFileUrl) 
      className='' 
      # Optional in-place filtering: if the keyword argument inplace=1 is passed to fileinput.input() or to 
      # the FileInput constructor, the file is moved to a backup file and standard output is directed to the 
      # input file (if a file of the same name as the backup file already exists, it will be replaced silently) 
      # . This makes it possible to write a filter that rewrites its input file in place. If the backup 
      # parameter is given (typically as backup='.<some extension>'), it specifies the extension for the 
      # backup file, and the backup file remains around; by default, the extension is '.bak' and it is deleted 
      # when the output file is closed. In-place filtering is disabled when standard input is read. 
      for line in fileinput.input(fullFileUrl, inplace=1): 
        matchClass = findClassNameP.search(line) 
        if matchClass: 
          className = matchClass.group() 
        matchX=findXP.search(line) 
        if matchX: 
          #print 后面需要有, 否则会出现多余的空行 
          print line.replace('XXXXX',className), 
        else: 
          print line, 
 
 
def search(): 
  os.path.walk(packDir,processDirectory,None) 
 
if __name__ == '__main__': 
  search()

上面的脚本中大部分是fileinput.input的注释,就是说了inplace=1其实就是把源文件的内容放到缓存区,然后直接将内容写入源文件

findClassNameP 是查找class name的正则表达式,上面的逻辑就是对文件逐行分析,拿到class name。然后再分析当前行是否有xxxxx,有的话就用class name 替换,没有的话就原行输出。

       以上使用对python脚本替换指定行的简单实例,如果大家有疑问或者更好的方法可以留言讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
跟老齐学Python之做一个小游戏
Sep 28 Python
python2 与 pyhton3的输入语句写法小结
Sep 10 Python
Python tkinter的grid布局及Text动态显示方法
Oct 11 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
python时间日期操作方法实例小结
Feb 06 Python
python简单的三元一次方程求解实例
Apr 02 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 Python
Python书单 不将就
Jul 11 #Python
Python编写一个闹钟功能
Jul 11 #Python
python自定义异常实例详解
Jul 11 #Python
详解python中的文件与目录操作
Jul 11 #Python
python 系统调用的实例详解
Jul 11 #Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 #Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 #Python
You might like
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
PHP无限分类的类
2007/01/02 PHP
PHP 的 __FILE__ 常量
2007/01/15 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PDO::setAttribute讲解
2019/01/29 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
Python高并发和多线程有什么关系
2020/11/14 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
美国老牌主机服务商:iPage
2016/07/22 全球购物
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
知识竞赛拉拉队口号
2014/06/16 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS