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

作者:ykdsg 时间:2022-03-18 16:53:28 

 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脚本替换指定行的简单实例,如果大家有疑问或者更好的方法可以留言讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://blog.csdn.net/ykdsg/article/details/11999681

标签:python,脚本替换
0
投稿

猜你喜欢

  • python中requests爬去网页内容出现乱码问题解决方法介绍

    2023-09-14 01:00:11
  • Python入门教程(十七)Python的While循环

    2022-07-31 13:42:27
  • Python3读取文件常用方法实例分析

    2023-07-07 16:13:43
  • Python基于mysql实现学生管理系统

    2024-01-24 05:57:47
  • innerHTML 引发“未知的运行时错误”

    2008-04-09 13:06:00
  • 删除PHP数组中的重复元素的实现代码

    2023-06-06 21:19:46
  • Python实现一键下载视频脚本

    2023-08-26 18:51:17
  • 带你深入了解MySQL语句优化的基本原则

    2008-11-27 17:00:00
  • python实现socket+threading处理多连接的方法

    2021-12-16 17:54:32
  • 在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据

    2023-07-04 14:31:37
  • python安装mysql的依赖包mysql-python操作

    2024-01-20 22:00:54
  • PHP面向对象编程之深入理解方法重载与方法覆盖(多态)

    2024-05-22 10:02:25
  • 如何运用python读写CSV文件

    2021-11-13 04:35:36
  • 使用python实现baidu hi自动登录的代码

    2021-11-23 14:54:32
  • Python多线程实现支付模拟请求过程解析

    2023-04-09 17:59:35
  • asp get和post数据接收过滤

    2011-04-06 10:52:00
  • SQL Server 2000“设备激活错误”的解决方法

    2024-01-12 15:30:23
  • 如何快速定位页面中复杂 CSS BUG 问题

    2009-01-15 12:23:00
  • python 发送和接收ActiveMQ消息的实例

    2022-08-23 18:45:20
  • 基于keras中import keras.backend as K的含义说明

    2023-04-28 08:43:27
  • asp之家 网络编程 m.aspxhome.com