秀!巧用Python实现对单个文件或多个文件中的指定字符串进行批量(修改)替换

目录

1. 对单份文件

1.1 将替换后的内容保存到新文件中

1.2 直接替换当前文件中的字符

2. 对多份文件(支持递归子目录)


1. 对单份文件

示例:将文件中字符串“address”替换成“device.address”

1.1 将替换后的内容保存到新文件中

实现代码

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File : Replace_String_of_Files.py
@Time : 2024/01/28 13:20:44
@Author : Admin 
@Version : 1.0
@Software: Visual Studio Code
'''import redef new_file(): f1 = open('/home/old.txt','r+')f2 = open('/home/new.txt','w+')str1 = r'address'str2 = r'device.address'for i in f1.readlines():k = re.sub(str1,str2,i)f2.write(k)f1.close()f2.close()if __name__ == '__main__':new_file()

1.2 直接替换当前文件中的字符

代码思路设计如下:

先以只读模式打开后,对文件每一行进行readlines()操作,并保存到新的列表中。然后随之关闭。 再以'w+'方式进行读写打开,对已经保存的列表用re.sub()进行替换操作,并用f.writelines()函数写入。

实现代码

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File : Replace_string_of_Single_files.py
@Time : 2024/01/28 14:28:30
@Author : Admin 
@Version : 1.0
@Software: Visual Studio Code
'''import redef new_file():f = open('/home/mac.txt','r')alllines=f.readlines()f.close()f = open('/home/mac.txt','w+')for i in alllines:k = re.sub('address','device.address',i)f.writelines(k)f.close()if __name__ == '__main__':new_file()

2. 对多份文件(支持递归子目录)

代码思路设计如下:

结合os模块,依次读入文件夹路径,子文件夹路径,文件路径,然后使用for循环,对每份文件进行遍历,然后执行读入文件、替换字符串、重新写入文件的操作。

示例:要求实现指定文件夹下,所有子文件夹中文件的字符串“address”替换成“device.address”

实现代码

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File : Replace_string_of_Multiple_files.py
@Time : 2024/01/28 17:47:13
@Author : Admin
@Version : 1.0
@Software: Visual Studio Code该函数实现批量读入文件,并寻找替换某个字符串,将修改后的字符串重新写入文件
file_PATH: 主文件夹路径
folder_path:子文件夹路径
file_path:文件路径
old_str: 待修改的字符串
new_str:修改后的字符串
'''
import os
def new_file(file_PATH,old_str,new_str):folder_list=os.listdir(file_PATH)#文件夹下的子文件夹列表for folder in folder_list:folder_path=os.path.join(file_PATH,folder)#子文件夹路径file_list=os.listdir(folder_path)#子文件夹下的文件列表for file in file_list:file_path=os.path.join(folder_path,file)#文件路径with open(file_path, "r", encoding='utf-8') as f:  # 以只读方式打开文件data = f.read()  # 读取文件,读取为一个字符串str_replace = data.replace(old_str,new_str)#将字符串中的某个字符进行替换with open(file_path, "w", encoding='utf-8') as f:#重新打开文件,选择写入模式f.write(str_replace)      # 将修改后的字符串重新写入文件
#函数执行
if __name__ == "__main__":file_PATH=r'E:\project_file\string\'old_str="address"new_str="device.address"new_file(file_PATH=file_PATH,old_str=old_str,new_str=new_str)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/653666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【备战蓝桥杯】——循环结构

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-bFHV3Dz5xMe6d3NB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

QT tcp与udp网络通信以及定时器的使用 (7)

QT tcp与udp网络通信以及定时器的使用 文章目录 QT tcp与udp网络通信以及定时器的使用1、QT网络与通信简单介绍2、QT TCP通信1、 服务器的流程2、 客户端的流程3、服务器的编写4、客户端的编写 3、QT UDP通信1、客户端流程2、客户端编写3、UDP广播4、UDP组播 4、定时器的用法1、…

【ArcGIS微课1000例】0098:查询河流流经过的格网

本实验讲述,ArcGIS中查询河流流经过的格网,如黄河流经过的格网、县城、乡镇、省份等。 文章目录 一、加载数据二、空间查询三、结果导出四、注意事项一、加载数据 加载实验配套数据0098.rar中的河流(黄河)和格网数据,如下图所示: 接下来,将查询河流流经过的格网有哪些并…

thinter聊天小工具

# 服务端 import queue import re import socket import time import tkinter as tk from threading import Threadclass ChatService():def __init__(self):# 聊天框左上角名称self.title f"马里奇聊天室"self.tk tk.Tk(classNameself.title)# 隐藏窗口# self.tk.…

社区检测(Community Detection)

如果你想进行社区检测(Community Detection),你可以使用 NetworkX 库提供的一些算法。社区检测的目标是将图中的节点划分为若干个社区或群组,使得社区内的节点紧密相连而社区间的连接尽量稀疏。以下是一个使用 Louvain 方法进行社…

SpringBoot将第三方的jar中的bean对象自动注入到ioc容器中

新建一个模块,做自动配置 config:需要准备两个类,一个自动配置类,一个配置类 CommonAutoConfig:此类用于做自动配置类它会去读取resoutces下的META-INF.spring下的org.springframework.boot.autoconfigure.AutoConfig…

LabVIEW探测器CAN总线系统

介绍了一个基于FPGA和LabVIEW的CAN总线通信系统,该系统专为与各单机进行系统联调测试而设计。通过设计FPGA的CAN总线功能模块和USB功能模块,以及利用LabVIEW开发的上位机程序,系统成功实现了CAN总线信息的收发、存储、解析及显示功能。测试结…

图论第二天|695. 岛屿的最大面积 1020. 飞地的数量 130. 被围绕的区域 417. 太平洋大西洋水流问题 827.最大人工岛

目录 Leetcode695. 岛屿的最大面积Leetcode1020. 飞地的数量Leetcode130. 被围绕的区域Leetcode417. 太平洋大西洋水流问题Leetcode827.最大人工岛 Leetcode695. 岛屿的最大面积 文章链接:代码随想录 题目链接:695. 岛屿的最大面积 思路:dfs …

嘿嘿,vue之输出土味情话

有点好玩&#xff0c;记录一下。通过按钮调用网站接口&#xff0c;然后解构数据输出土味情话。 lovetalk.vue: <!--vue简单框架--> <template> <!-- 这是一个div容器&#xff0c;用于显示土味情话 --> <div class"talk"> <!-- 当点…

回归预测 | Matlab实现CPO-LSSVM【24年新算法】冠豪猪优化最小二乘支持向量机多变量回归预测

回归预测 | Matlab实现CPO-LSSVM【24年新算法】冠豪猪优化最小二乘支持向量机多变量回归预测 目录 回归预测 | Matlab实现CPO-LSSVM【24年新算法】冠豪猪优化最小二乘支持向量机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-LSSVM【24年…

大模型基础

大模型是什么 大模型是一种由大规模语言模型&#xff0c;由大量神经元组成&#xff0c;可以对输入的文本或者其他的类似视频图片语音等进行预测和生成&#xff0c;以便提供更多的信息给用户。这种模型通常基于深度学习技术和大规模语言模型训练&#xff0c;能够模拟人类的对话…

K个一组翻转链表---链表OJ

https://leetcode.cn/problems/reverse-nodes-in-k-group/?envType=study-plan-v2&envId=top-100-liked K个一组进行翻转,大体上是和前面两两翻转是类似的,区别就在于,这里需要自己判断是否需要翻转,如何翻转,怎么记录。这里我们用递归来实现。 是否需要翻转…

数据结构·单链表经典例题

1. 移除链表元素 OJ链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 本题是说给出一个链表的头节点head和一个整数val&#xff0c;如果发现节点中存的数据有val就删掉它&#xff0c;最后返回修改后的链表头节点地址 如果题目中没有明确…

第十八讲_HarmonyOS应用开发实战(实现电商首页)

HarmonyOS应用开发实战&#xff08;实现电商首页&#xff09; 1. 项目涉及知识点罗列2. 项目目录结构介绍3. 最终的效果图4. 部分源码展示 1. 项目涉及知识点罗列 掌握HUAWEI DevEco Studio开发工具掌握创建HarmonyOS应用工程掌握ArkUI自定义组件掌握Entry、Component、Builde…

【Redis】关于它为什么快?使用场景?以及使用方式?为何引入多线程?

目录 1.既然redis那么快&#xff0c;为什么不用它做主数据库&#xff0c;只用它做缓存&#xff1f; 2.Redis 一般在什么场合下使用&#xff1f; 3.redis为什么这么快&#xff1f; 4.Redis为什么要引入了多线程&#xff1f; 1.既然redis那么快&#xff0c;为什么不用它做主数据…

Nginx 配置解析:从基础到高级应用指南

Nginx 配置解析&#xff1a;从基础到高级应用指南 Nginx 配置解析&#xff1a;从基础到高级应用指南1. 安装和基本配置安装 Nginx基本配置 2. 虚拟主机配置3. 反向代理配置4. 负载均衡配置5. SSL 配置6. 高级配置选项结语 Nginx 配置解析&#xff1a;从基础到高级应用指南 Ngi…

C#使用OpenCvSharp4库读取电脑摄像头数据并实时显示

一、OpenCvSharp4库 OpenCvSharp4库是一个基于.Net封装的OpenCV库&#xff0c;Github源代码地址为&#xff1a;https://github.com/shimat/opencvsharp&#xff0c;里面有关于Windows下安装OpenCvSharp4库的描述&#xff0c;如下图所示&#xff1a; 二、C#使用OpenCvSharp4库…

java 中 this关键字

class Person {private double base;// 普通方法(非构造器方法)里的this&#xff0c;就是new出来的那个对象public double getBase(){ return this.base;}public void setBase(double b){this.base b }// 构造器中的this&#xff0c;是&#xff0c;当前正在new过程中的对象&am…

人机协同中的一阶谓词推理与态势信息增强

一阶谓词逻辑推理是指使用一阶谓词逻辑来进行推理和推断。在人机协同中&#xff0c;一阶谓词逻辑推理可以用于理解和解释人类用户的意图和需求&#xff0c;以及帮助机器理解和生成自然语言。 一阶谓词逻辑推理的基本原理是使用一组逻辑规则和事实&#xff0c;通过逻辑推理来得出…