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

发布时间 - 2026-01-11 02:17:37    点击率:

 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修改文件往指定行插入内容的实例  # 的是  # 说了  # 不多  # 很容易  # 希望能  # 然后再  # 正则表达式  # 就用  # 谢谢大家  # 你就会  # 并把  # 则会  # 中大  # 一篇文章  # 就可以  # 新到  # 人肉  # 替换成  # 在网上  # 行输出 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: PHP正则匹配日期和时间(时间戳转换)的实例代码  浅谈javascript alert和confirm的美化  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何续费美橙建站之星域名及服务?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  MySQL查询结果复制到新表的方法(更新、插入)  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何在香港服务器上快速搭建免备案网站?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  微信小程序 canvas开发实例及注意事项  北京专业网站制作设计师招聘,北京白云观官方网站?  怎么用AI帮你为初创公司进行市场定位分析?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  香港服务器如何优化才能显著提升网站加载速度?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  网站优化排名时,需要考虑哪些问题呢?  如何用好域名打造高点击率的自主建站?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Android 常见的图片加载框架详细介绍  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  如何在IIS中新建站点并解决端口绑定冲突?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何用免费手机建站系统零基础打造专业网站?  如何快速搭建支持数据库操作的智能建站平台?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  php 三元运算符实例详细介绍  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  JS弹性运动实现方法分析  canvas 画布在主流浏览器中的尺寸限制详细介绍  Linux安全能力提升路径_长期防护思维说明【指导】  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  详解jQuery中基本的动画方法  Python制作简易注册登录系统  打造顶配客厅影院,这份100寸电视推荐名单请查收  零服务器AI建站解决方案:快速部署与云端平台低成本实践  网站制作壁纸教程视频,电脑壁纸网站?  如何在IIS服务器上快速部署高效网站?  Laravel如何使用Livewire构建动态组件?(入门代码)  bootstrap日历插件datetimepicker使用方法  如何在Ubuntu系统下快速搭建WordPress个人网站?  公司网站制作需要多少钱,找人做公司网站需要多少钱?