python批量替换多文件字符串问题详解

系统如下:

操作系统 : CentOS7.3.1611_x64

Python 版本 : 2.7.5

问题描述

编码过程中有时候会遇到在多个源文件中存在同一个变量名(比如 : writeBuffer),需要替换为新的变量名(比如 : write_buffer)的问题。 怎么能方便快捷的解决该问题呢?

解决方案

使用sed

sed和grep结合使用可以替换当前文件夹多个文件的内容。

格式 :

sed -i 's/原字符串/新字符串/g' `grep  -rl 原字符串 所在目录`

示例代码:

sed -i 's/writeBuffer/write_buffer/g' `grep -rl writeBuffer  ./*`

使用Python

使用Python脚本可以实现替换当前文件夹多个文件的内容。

替换单个文件的代码如下:

def doReplace(fpath,src,dst):
 newConent,bFlag = "",False
 with open(fpath,"rb") as fin:
 for line in fin :
  if line.find(src) == -1 :
  newLine = line
  else:
  bFlag = True
  newLine = line.replace(src,dst)
  newConent += newLine
 if not bFlag : return None
 print fpath
 with open(fpath,"wb") as fout:
 fout.write(newConent)
 return None

替换多个文件仅需添加目录遍历代码。

完整示例代码如下:

#! /usr/bin/python
#-*- coding: utf-8 -*- 

import os,sys

def doReplace(fpath,src,dst):
 newConent,bFlag = "",False
 with open(fpath,"rb") as fin:
 for line in fin :
  #if len(line.strip()) == 0 : continue
  if line.find(src) == -1 :
  newLine = line
  else:
  bFlag = True
  newLine = line.replace(src,dst)
  newConent += newLine
 if not bFlag : return None
 print fpath
 with open(fpath,"wb") as fout:
 fout.write(newConent)
 return None

def replaceMain(dirName,src,dst):
 for root, dirs, files in os.walk(dirName):
 for name in files:
  fpath = os.path.join(root, name)
  doReplace(fpath,src,dst)
 return None

if __name__ == "__main__":
 if len(sys.argv) < 3 :
 print "usage : replaceMulti srcStr dstStr"
 print "replace current dir files"
 sys.exit(1)
 srcStr = sys.argv[1]
 dstStr = sys.argv[2]
 dirName = "."
 dirName = os.path.realpath(dirName)
 print "working dir :",dirName
 replaceMain(dirName,srcStr,dstStr)

添加可执行权限:

chmod a+x replaceMulti.py

使用示例:

./replaceMulti.py writeBuffer write_buffer

将当前文件夹中所有 writeBuffer 替换为 write_buffer

也可以将 replaceMulti.py 放入 /usr/local/bin/ 目录:

[root@local ~]# mv replaceMulti.py /usr/local/bin/
[root@local ~]# replaceMulti.py
usage : replaceMulti srcStr dstStr
replace current dir files
[root@local ~]#

该脚本在windows下也可以使用,将 replaceMulti.py 所在目录加入环境变量即可。

好,就这些了,希望对你有帮助。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

您可能感兴趣的文章:

  • python实现文件名批量替换和内容替换
  • python批量替换页眉页脚实例代码
  • python字符串替换的2种方法
  • Python字符串拼接、截取及替换方法总结分析
  • Python 字符串操作实现代码(截取/替换/查找/分割)
  • Python正则替换字符串函数re.sub用法示例
  • Python正则表达式如何进行字符串替换实例
  • python字符串替换示例
  • Python中的字符串替换操作示例
(0)

相关推荐

  • Python正则替换字符串函数re.sub用法示例

    本文实例讲述了Python正则替换字符串函数re.sub用法.分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它替换成自己想要的字符串的方法 re.sub 函数进行以正则表达式为基础的替换工作 下面是一段示例源码 #!/usr/bin/env python #encoding: utf-8 import re url = 'https://113.215.20.136:9011/113.215.6.77/c3

  • python批量替换页眉页脚实例代码

    简介 本文分享的实例代码主要通过python语言实现批量替换页眉页脚的操作功能,具体如下. 代码 #!/usr/bin/env python # -*- coding: utf-8 -*- import win32com,os,sys,re from win32com.client import Dispatch, constants # 打开新的文件 suoyou = os.listdir('d:\\daizhuan') #print suoyou for i in suoyou: wenji

  • python字符串替换示例

    php5.2升级到5.3后,原& new的写法已经被放弃了,可以直接new了,面对上百个php文件,手动修改简直是想要命,所以写了个脚本,分分钟搞定. 复制代码 代码如下: #-*- coding:utf-8 -*- #!/usr/bin/python import os #定义程序根目录rootpath='D:\\wamp\\www\\erp\\app' def m_replace(path): for item in os.listdir(path):  nowpath=os.path.jo

  • Python中的字符串替换操作示例

    字符串的替换(interpolation), 可以使用string.Template, 也可以使用标准字符串的拼接. string.Template标示替换的字符, 使用"$"符号, 或 在字符串内, 使用"${}"; 调用时使用string.substitute(dict)函数. 标准字符串拼接, 使用"%()s"的符号, 调用时, 使用string%dict方法. 两者都可以进行字符的替换. 代码: # -*- coding: utf-8 -

  • python字符串替换的2种方法

    python 字符串替换 是python 操作字符串的时候经常会碰到的问题,这里简单介绍下字符串替换方法. python 字符串替换可以用2种方法实现: 1是用字符串本身的方法. 2用正则来替换字符串 下面用个例子来实验下: a = 'hello word' 把a字符串里的word替换为python 1.用字符串本身的replace方法 复制代码 代码如下: a.replace('word','python') 输出的结果是hello python 2.用正则表达式来完成替换: 复制代码 代码如

  • Python 字符串操作实现代码(截取/替换/查找/分割)

    Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. 复制代码 代码如下: # 例1:字符串截取str = '12345678'print str[0:1]>> 1   # 输出str位置0开始到位置1以前的字符print str[1:6]  >> 23456   # 输出str位置1开始到位置6以前的字符num = 18str = '0000' + str(num) # 合并字符串pr

  • Python字符串拼接、截取及替换方法总结分析

    本文实例讲述了Python字符串拼接.截取及替换方法.分享给大家供大家参考,具体如下: python字符串连接 python字符串连接有几种方法,我开始用的第一个方法效率是最低的,后来看了书以后就用了后面的2种效率高的方法,跟大家分享一下. 先介绍下效率比较低的方法: a = ['a','b','c','d'] content = '' for i in a: content = content + i print content content的结果是:'abcd' 后来我看了书以后,发现书上

  • Python正则表达式如何进行字符串替换实例

    Python正则表达式在使用中会经常应用到字符串替换的代码.有很多人都不知道如何解决这个问题,下面的代码就告诉你其实这个问题无比的简单,希望你有所收获. 1.替换所有匹配的子串用newstring替换subject中所有与正则表达式regex匹配的子串 result, number = re.subn(regex, newstring, subject) 2.替换所有匹配的子串(使 用正则表达式对象) rereobj = re.compile(regex) result, number = re

  • python实现文件名批量替换和内容替换

    指定文件夹,指定文件类型,替换该文件夹下全部文件的内容. 注意在window下的读写内容需要指定编码,还需要在文件头指定#coding:utf-8 编码,避免出现编码问题. 复制代码 代码如下: #coding:utf-8 import osimport os.path path='.'oldStr='.php'newStr='.html' for (dirpath, dirnames, filenames) in os.walk(path):    for file in filenames:

  • python批量替换多文件字符串问题详解

    系统如下: 操作系统 : CentOS7.3.1611_x64 Python 版本 : 2.7.5 问题描述 编码过程中有时候会遇到在多个源文件中存在同一个变量名(比如 : writeBuffer),需要替换为新的变量名(比如 : write_buffer)的问题. 怎么能方便快捷的解决该问题呢? 解决方案 使用sed sed和grep结合使用可以替换当前文件夹多个文件的内容. 格式 : sed -i 's/原字符串/新字符串/g' `grep  -rl 原字符串 所在目录` 示例代码: sed

  • Python中__init__.py文件的作用详解

    __init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件. 通常__init__.py 文件为空,但是我们还可以为它增加其他的功能.我们在导入一个包时,实际上是导入了它的__init__.py文件.这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入. # package # __init__.py import re import urllib import sys impo

  • 关于Python OS模块常用文件/目录函数详解

    模块:包含定义函数和变量的python文件,可以被别的程序引入. os模块是操作系统接口模块,提供了一些方便使用操作系统相关功能函数,这里介绍下os模块中对于文件/目录常用函数和使用方法. 1. 返回当前文件目录:getcwd() 2.改变工作目录:chdir(path) 将当前工作目录更改为path的目录 3. 更改当前进程根目录:chroot(path) 4.列举出目录中的文件名:listdir(path) 返回列表,包含了path所有文件和目录名称,排序无顺序 5.创建目录:mkdir(p

  • Python学习之yaml文件的读取详解

    目录 yaml 文件的应用场景与格式介绍 yaml 文件的应用场景 yaml 文件的格式 第三方包 - pyyaml 读取 yaml 文件的方法 yaml文件读取演示案例 yaml 文件的应用场景与格式介绍 yaml 文件的应用场景 yaml其实也类似于 json.txt ,它们都属于一种文本格式.在我们的实际工作中, yaml 文件经常作为服务期配置文件来使用. 比如一些定义好的内容,并且不会修改的信息,我们就可以通过定义 yaml 文件,然后通过读取这样的文件,将数据导入到我们的服务中进行使

  • Python自动操作Excel文件的方法详解

    目录 工具 读取Excel文件内容 写入Excel文件内容 Excel文件样式调整 设置表头的位置 设置单元格的宽高 总结 工具 python3.7 Pycharm Excel xlwt&xlrd 读取Excel文件内容 当前文件夹下有一个名为“股票数据.xlsx”的Excel文件,可以按照下列代码方式来操作它. import xlrd # 使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象(工作簿) wb = xlrd.open_workbook('股票数

  • Python批量生成字幕图片的方法详解

    目录 说明 前提 放码 说明 视频剪辑时需要为视频添加字幕,添加字幕方法之一:根据字幕文本文件批量生成透明底只有字幕内容的图片文件,如下图,然后将这些图片文件添加到视频剪辑软件轨道中. 于是用pillow这Python图片工具库执行本次批量生成工作. 前提 pip intall pillow 放码 from PIL import Image, ImageDraw, ImageFont import os imageWidth, imageHeight = 1920, 1080 fontsFold

  • Python高效处理大文件的方法详解

    目录 开始 处理文本 串行处理 多进程处理 并行处理 并行批量处理 将文件分割成批 运行并行批处理 tqdm 并发 结论 为了进行并行处理,我们将任务划分为子单元.它增加了程序处理的作业数量,减少了整体处理时间. 例如,如果你正在处理一个大的CSV文件,你想修改一个单列.我们将把数据以数组的形式输入函数,它将根据可用的进程数量,一次并行处理多个值.这些进程是基于你的处理器内核的数量. 在这篇文章中,我们将学习如何使用multiprocessing.joblib和tqdm Python包减少大文件

  • python通过http下载文件的方法详解

    1.通过requests.get方法 r = requests.get("http://200.20.3.20:8080/job/Compile/job/aaa/496/artifact/bbb.iso") with open(os.path.join(os.path.dirname(os.path.abspath("__file__")),"bbb.iso"),"wb") as f: f.write(r.content) 2

  • python爬虫智能翻页批量下载文件的实例详解

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆为例,批量下载文件,如财务资料,他的每一份报告都是一份pdf格式的文档.以此页面为目标,下载他每个分类的文件python爬虫实战之智能翻页批量下载文件. 1.引入库 import requests import pandas as pd from lxml import etree import r

  • 基于python批量处理dat文件及科学计算方法详解

    摘要:主要介绍一些python的文件读取功能,文件内容修改,文件名后缀更改等操作. 批处理文件功能 import os path1 = 'C:\\Users\\awake_ljw\\Documents\\python for data analysis\\test1' path2 = 'C:\\Users\\awake_ljw\\Documents\\python for data analysis\\test2' filelist = os.listdir(path1) for files i

随机推荐