目录

前言

一、为什么选择 python

二、使用步骤

1.搜索

2.替换

3 整合

4 脚本使用



前言

接上文 批量修改文件内容

一、为什么选择 python

  1. 近年来 Python 的使用率越来越高,甚至热度已经超过了 java
  2. 相比 shell 脚本,python 语法简单,更容易阅读,内置了许多第三方模块可供使用
  3. 相比 java 等其他语言,python 易于发布部署,更适用于一些日常脚本的编写

二、使用步骤

1.搜索

采用递归的方式,遍历目录下的所有文件

# 文件查找 find . -name file_name -type f
# 查找函数:search_path 查找根路径 file_name 需要查找的文件名
def search(search_path, search_file_name, search_result):# 获取当前路径下地所有文件all_file = os.listdir(search_path)# 对于每一个文件for each_file in all_file:# 若文件为一个文件夹if os.path.isdir(search_path + os.sep + each_file):# 递归查找search(search_path + os.sep + each_file, search_file_name, search_result)# 如果是需要被查找的文件elif each_file == search_file_name:# 输出路径search_result.append(search_path + os.sep + search_file_name)

2.替换

代码如下:

# 替换 sed -i 's/old_str/new_str/'
# 文本替换 replace_file_name 需要替换的文件路径,replace_old_str 要替换的字符,replace_new_str 替换的字符
def replace(replace_file_name, replace_old_str, replace_new_str):f1 = open(replace_file_name, "r")content = f1.read()f1.close()t = content.replace(replace_old_str, replace_new_str)with open(replace_file_name, "w") as f2:f2.write(t)f2.close()

3 整合

用到了 getopt 模块

if __name__ == '__main__':result = []# 默认当前目录path = os.getcwd()file_name = "test"old_str = "old_str"new_str = "new_str"try:opts, args = getopt.getopt(sys.argv[1:], "hp:f:o:n:", ["help", "path=", "file=", "old=", "new="])except getopt.GetoptError:print('usage: search_and_replace.py -p <path> -f <file_name> -o <old_str> -n <new_str>')sys.exit(2)for opt, arg in opts:if opt in ('-h', '--help'):print('usage: search_and_replace.py -p <path> -f <file_name> -o <old_str> -n <new_str>')sys.exit()elif opt in ("-p", "--path"):path = argelif opt in ("-f", "--file"):file_name = argelif opt in ("-o", "--old"):old_str = argelif opt in ("-n", "--new"):new_str = argsearch(path, file_name, result)for file_name in result:replace(file_name, old_str, new_str)print("replace {} to {} in file {} successfully".format(old_str, new_str, file_name))

4 脚本使用

将文件名为 config 的文件中的 old_str 转换为 new_str

python search_and_replace.py -f config -o old_str -n new_str 

结果:

批量修改文件内容(Python版)相关推荐

  1. linux中vi修改文件内容,linux VI模式下批量修改文件内容

    1.         :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky 2.         :n,$ ...

  2. bat 批量修改文件内容

    :::::批量修改文件内容.bat::::: @echo off :: 开启变量延迟扩展 setlocal EnableDelayedExpansion :: 输入开始 :inputFilePath ...

  3. linux修改程序文件内容,linux 批量修改文件内容

    如果有批量修改文件内容的需求,可参考下面这些方法 1.批量查找某个目下文件的包含的内容,例如: #   grep -rn或l "要找查找的文本"  路径或文件 rn表示匹配查找字符 ...

  4. bat批量修改文件内容

    说明: 主要功能: 遍历某目录下所有文件,将制定的文字替换成目标文字. 使用步骤: 1.双击运行moreFileUpdate.bat批量修改目录下的所有文件. 编写注意点: 中文放入变量中需注意转为A ...

  5. matlab批量修改文件内容并转换文件格式

    % 实现对.txt文件的.mat格式转换 % 实现文件内容修改 % 实现文件名称修改 clear;clc;close all; path = 'I:\在校研究';%源文件位置 % tracker = ...

  6. linux 批量替换文件内容及查找某目录下所有包含某字符串的文件(批量修改文件内容)

    转自 http://blog.csdn.net/werm520/article/details/49334513 grep -rl '10.100.137.5' | xargs sed -i '10. ...

  7. linux 批量替换文件内容及查找某目录下所有包含某字符串的文件(批量修改文件内容)...

    1. sed grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g' 例如: 对象:文件夹 grep -rl 'windo ...

  8. UltraEdit批量修改文件内容

    现在假设我们要把MyCommon7E目录里所有cpp文件中的<#include "stdafx.h">字段改为<#include "..\..\StdA ...

  9. ubuntu系统批量修改文件内容

    代码作用: 将./bin/目录下的/ly/code替换为/lby 格式为: sed -i "s/旧内容/新内容/g" `grep 旧内容 -rl 文件名` 下面代码的\表示转义 # ...

最新文章

  1. CVPR2019目标检测论文看点:并域上的广义交
  2. rtklib 天线相位中心_基于传输线匹配理论的OAM透射阵天线设计
  3. python word排版_使用Python通过win32 COM实现Word文档的写入与保存方法
  4. 运行一个程序时如何打印出执行程序的时间
  5. Python之旅Day8 socket网络编程
  6. 今天,公司架构师跟我分享多年的私货 | 进阶之路必读书籍(附下载链接)
  7. 手机游戏资源 特效 显存分析工具
  8. 学习笔记之进程管理的相关重要命令
  9. 【原】浅谈KL散度(相对熵)在用户画像中的应用
  10. php 关于token、签名、加密的一点理解
  11. 新手做国外广告联盟lead常用工具汇总!
  12. jinja2说明文档
  13. 开源爱好者李涛:三人行必有我师
  14. ios 开发资源网 (from eagel)
  15. Dharma家族变体,.adobe后缀勒索病毒解密
  16. 如何利用小红书进行产品营销?小红书营销技巧有哪些?
  17. python 获取计算机的网卡信息
  18. 向日葵显示disconnect,连接不上
  19. ad模数转换采集电压程序c语言,使用单片机自带AD转换采样电位器,进行PWM调光...
  20. 机械手排列控制器程序接线图

热门文章

  1. 第 12 章 武装飞船
  2. not within a switch statement_【实用教程】Switch无法登录关联任天堂账号怎么办
  3. Java游戏用户登录注册_用java类模拟游戏的账号的登陆,注册,退出。 1.没有账号,需要注册。 2.注册完成后方可登...
  4. 收费软件推广模式探索1
  5. 机器学习中常用的几何距离测量和统计距离测量方法总结
  6. QorIQ LX2160A安全引擎操作模式
  7. html a标签 onload,动态加载script和css标签的onload问题
  8. 玩转iOS开发:iOS 10 新特性《Siri Kit Intents Extension UI》
  9. 数据结构之2-3 树
  10. 什么是懦弱型人格?懦弱的原因和改变方法