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程序员开发中常犯的10个错误
Jul 07 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Python ConfigParser模块的使用示例
Oct 12 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
如何用python实现一个HTTP连接池
Jan 14 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
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
PHP使用数组实现队列
2012/02/05 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
JS获取网页图片name属性的方法
2015/04/01 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
小程序实现录音功能
2020/09/22 Javascript
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
2014年小学国庆节活动方案
2014/09/16 职场文书
2014年残联工作总结
2014/11/21 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
地道战观后感400字
2015/06/04 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
java代码实现空间切割
2022/01/18 Java/Android
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫