批量修改文件内容(Python版)
目录
前言
一、为什么选择 python
二、使用步骤
1.搜索
2.替换
3 整合
4 脚本使用
前言
接上文 批量修改文件内容
一、为什么选择 python
- 近年来 Python 的使用率越来越高,甚至热度已经超过了 java
- 相比 shell 脚本,python 语法简单,更容易阅读,内置了许多第三方模块可供使用
- 相比 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版)相关推荐
- linux中vi修改文件内容,linux VI模式下批量修改文件内容
1. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky 2. :n,$ ...
- bat 批量修改文件内容
:::::批量修改文件内容.bat::::: @echo off :: 开启变量延迟扩展 setlocal EnableDelayedExpansion :: 输入开始 :inputFilePath ...
- linux修改程序文件内容,linux 批量修改文件内容
如果有批量修改文件内容的需求,可参考下面这些方法 1.批量查找某个目下文件的包含的内容,例如: # grep -rn或l "要找查找的文本" 路径或文件 rn表示匹配查找字符 ...
- bat批量修改文件内容
说明: 主要功能: 遍历某目录下所有文件,将制定的文字替换成目标文字. 使用步骤: 1.双击运行moreFileUpdate.bat批量修改目录下的所有文件. 编写注意点: 中文放入变量中需注意转为A ...
- matlab批量修改文件内容并转换文件格式
% 实现对.txt文件的.mat格式转换 % 实现文件内容修改 % 实现文件名称修改 clear;clc;close all; path = 'I:\在校研究';%源文件位置 % tracker = ...
- linux 批量替换文件内容及查找某目录下所有包含某字符串的文件(批量修改文件内容)
转自 http://blog.csdn.net/werm520/article/details/49334513 grep -rl '10.100.137.5' | xargs sed -i '10. ...
- linux 批量替换文件内容及查找某目录下所有包含某字符串的文件(批量修改文件内容)...
1. sed grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g' 例如: 对象:文件夹 grep -rl 'windo ...
- UltraEdit批量修改文件内容
现在假设我们要把MyCommon7E目录里所有cpp文件中的<#include "stdafx.h">字段改为<#include "..\..\StdA ...
- ubuntu系统批量修改文件内容
代码作用: 将./bin/目录下的/ly/code替换为/lby 格式为: sed -i "s/旧内容/新内容/g" `grep 旧内容 -rl 文件名` 下面代码的\表示转义 # ...
最新文章
- CVPR2019目标检测论文看点:并域上的广义交
- rtklib 天线相位中心_基于传输线匹配理论的OAM透射阵天线设计
- python word排版_使用Python通过win32 COM实现Word文档的写入与保存方法
- 运行一个程序时如何打印出执行程序的时间
- Python之旅Day8 socket网络编程
- 今天,公司架构师跟我分享多年的私货 | 进阶之路必读书籍(附下载链接)
- 手机游戏资源 特效 显存分析工具
- 学习笔记之进程管理的相关重要命令
- 【原】浅谈KL散度(相对熵)在用户画像中的应用
- php 关于token、签名、加密的一点理解
- 新手做国外广告联盟lead常用工具汇总!
- jinja2说明文档
- 开源爱好者李涛:三人行必有我师
- ios 开发资源网 (from eagel)
- Dharma家族变体,.adobe后缀勒索病毒解密
- 如何利用小红书进行产品营销?小红书营销技巧有哪些?
- python 获取计算机的网卡信息
- 向日葵显示disconnect,连接不上
- ad模数转换采集电压程序c语言,使用单片机自带AD转换采样电位器,进行PWM调光...
- 机械手排列控制器程序接线图
热门文章
- 第 12 章		武装飞船
- not within a switch statement_【实用教程】Switch无法登录关联任天堂账号怎么办
- Java游戏用户登录注册_用java类模拟游戏的账号的登陆,注册,退出。 1.没有账号,需要注册。 2.注册完成后方可登...
- 收费软件推广模式探索1
- 机器学习中常用的几何距离测量和统计距离测量方法总结
- QorIQ LX2160A安全引擎操作模式
- html a标签 onload,动态加载script和css标签的onload问题
- 玩转iOS开发:iOS 10 新特性《Siri Kit Intents Extension UI》
- 数据结构之2-3 树
- 什么是懦弱型人格?懦弱的原因和改变方法