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
# 脚本替换日志系统
# python在文本开头插入一行的实例
# Python创建文件和追加文件内容实例
# Python实现删除文件中含“指定内容”的行示例
# 利用Python在一个文件的头部插入数据的实例
# Python实现给文件添加内容及得到文件信息的方法
# Python实现替换文件中指定内容的方法
# Python实现修改文件内容的方法分析
# Python修改文件往指定行插入内容的实例
# 的是
# 说了
# 不多
# 很容易
# 希望能
# 然后再
# 正则表达式
# 就用
# 谢谢大家
# 你就会
# 并把
# 则会
# 中大
# 一篇文章
# 就可以
# 新到
# 人肉
# 替换成
# 在网上
# 行输出
相关文章:
如何快速生成ASP一键建站模板并优化安全性?
建站之星安装后界面空白如何解决?
如何打造高效商业网站?建站目的决定转化率
详解jQuery停止动画——stop()方法的使用
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
定制建站方案优化指南:企业官网开发与建站费用解析
如何高效配置香港服务器实现快速建站?
Python路径拼接规范_跨平台处理说明【指导】
宝塔建站无法访问?如何排查配置与端口问题?
Swift中swift中的switch 语句
如何快速选择适合个人网站的云服务器配置?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
如何注册花生壳免费域名并搭建个人网站?
建站之星展会模版如何一键下载生成?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
制作网站的基本流程,设计网站的软件是什么?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
建站VPS推荐:2025年高性能服务器配置指南
如何配置WinSCP新建站点的密钥验证步骤?
学校建站服务器如何选型才能满足性能需求?
如何快速搭建高效香港服务器网站?
如何快速搭建FTP站点实现文件共享?
如何选择高性价比服务器搭建个人网站?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
香港服务器部署网站为何提示未备案?
IOS倒计时设置UIButton标题title的抖动问题
建站之星导航如何优化提升用户体验?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何在Windows虚拟主机上快速搭建网站?
如何快速登录WAP自助建站平台?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
如何实现建站之星域名转发设置?
建站主机如何选?性能与价格怎样平衡?
孙琪峥织梦建站教程如何优化数据库安全?
宝塔建站助手安装配置与建站模板使用全流程解析
山东网站制作公司有哪些,山东大源集团官网?
如何做静态网页,sublimetext3.0制作静态网页?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何在阿里云购买域名并搭建网站?
焦点电影公司作品,电影焦点结局是什么?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
如何用腾讯建站主机快速创建免费网站?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
深圳网站制作的公司有哪些,dido官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。