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复制文件的方法实例详解
May 22 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
Python简单生成8位随机密码的方法
May 24 Python
Python生成器generator用法示例
Aug 10 Python
python设定并获取socket超时时间的方法
Jan 12 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
基于Python获取城市近7天天气预报
Nov 26 Python
Python动态声明变量赋值代码实例
Dec 30 Python
jupyter note 实现将数据保存为word
Apr 14 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
如何在Python中妥善使用进度条详解
Apr 05 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 include,include_once,require,require_once
2008/09/05 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
angular2使用简单介绍
2016/03/01 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
element中的$confirm的使用
2020/04/26 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
python实现各进制转换的总结大全
2017/06/18 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
关于母亲节的感言
2014/02/04 职场文书
财务会计实训报告
2014/11/05 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
国博复兴之路观后感
2015/06/02 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL