Python读写文件脚本

镇三山
• 阅读 580

该脚本根据输入的路径,可以读取路径下的所有文件,实现匹配字符串替换,添加内容和删除内容的功能。

import os
from fileinput import FileInput

#删除内容
def match_then_delete(inputpath):
    for root,dirs,files in os.walk(inputpath):
        for file in files:
            path = os.path.join(root,file)
            output_file_path = ""+file
            print(out_file_path)
            with open(path,'r',encoding='gbk') as infile:
                input_stream=infile.read()
                output_stream=""
                #换行分切分内容
                input_stream_lines=input_stream.split("\n")
                for line in input_stream_lines:
                    if line.startwith(""):
                        pass
                    else:
                        output_stream=output_stream+line+'\n'
                #读取去掉指定内容后的新内容,重新写文件
                g = open(output_file_path,'w')
                g.write(output_stream)

#添加内容,在匹配内容match上方添加内容content
def match_then_insert(filename,match,content):
    for line in FileInput(filename,inplace=True):
        if match in line:
            line = content+'\n'+line
        print(line,end='')

#匹配字符串替换
def match_then_replace(filename,oldtext,newtext):
    for line in FileInput(filename, inplace=True):
        if oldtext in line:
            line = line.replace(oldtext,newtext)
        print(line,end='')

if __name__=='__main__':
    inputpath = ""
    for root,dirs,files in os.walk(inputpath):
        for file in files:
            path = os.path.join(root,file)
            output_file_path = inputpath+file
            match_then_replace(output_file_path,"oldtext","newtext")

需要注意的点:
当我们需要处理的文件是utf-8编码时,而python3中默认的文件解码格式是gbk,若直接使用FileInput模块,会报错误
UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 116: illegal multibyte sequence
若我们使用如下形式

for line in fileinput.input(filename,openhook=fileinput.hook_encoded('utf-8','')

使用openhook指定编码格式为utf-8时,此时则无法设置inplace=True,即无法写入文件
这里使用的解决办法是修改fileinput的源码,在340和360行附近,在代码中加入enconding="utf-8"
Python读写文件脚本

参考文章链接:https://www.cnblogs.com/bj-xy/p/6340256.html

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
3年前
一文带你解读​JavaScript的基本用法
前言相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScript,因为它对做网页方面是有很大作用的。JavaScript的基本用法1.如何使用Js脚本1).引入Js文件在头部标签中导入脚本标签并指明脚本文件路径2).
Wesley13 Wesley13
3年前
java向python ,text文件动态传参或传值问题完美解决
由于业务需要对python文件进行参数传递,通过下面两个java方法完美解决此问题,我的思路是:首先我要先把上次写的参数删除,第二我要新的参数写到python文件中。第一个方法解决了删除上次传递的参数问题。第二个方法解决了参数传递到python文件/@paramfilepython文件的路径
Stella981 Stella981
3年前
C#读取Excel以及将数据导入至Excel
一,读取Excel文件内容:1//根据excle的路径把第一个sheel中的内容放入datatable2publicstaticDataTableReadExcelToTable()//excel存放的路径3{4//连接字
执键写春秋 执键写春秋
4年前
java IO编程实例——文件内容复制
题目:完成文件内容复制操作,在程序运行后提示输入源文件路径,然后再输入目标文件路径。packageperson.xsc.praticeIII;importjava.io.;importjava.util.Scanner;publicclassCopypublicstaticvoidmain(Stringargs)throwsI
Stella981 Stella981
3年前
Linux——定时清空日志内容和删除日志文件
前言最近在做性能压测试,会生成大量的日志,导致后续越压越慢,最终磁盘空间占满之类的问题。老是要手动删除日志文件,为避免此类问题发生,编写一个Linux日志定时清理的脚本,一劳永逸。1、shell脚本创建脚本并赋权touch/home/mppay/autotruncatelog.shchmod u
Stella981 Stella981
3年前
Python对文件修改,替换,删除
一、修改原文件内容方式:!/usr/bin/envpythoncoding:utf8old_str"aaa"老文件内容字段new_str"bbb"要改成字段file_data''withopen('/
Wesley13 Wesley13
3年前
Java 解压zip压缩包
因为最近项目需要批量上传文件,而这里的批量就是将文件压缩在了一个zip包里,然后读取文件进行解析文件里的内容。因此需要先对上传的zip包进行解压。以下直接提供代码供参考:1.第一个方法是用于解压zip压缩包的方法。2.第二个方法是 删除该文件夹以及子目录和子目录文件的方法。3.第三个方法是删除 删除文件夹内所有文件和子目录的方法。因为
Stella981 Stella981
3年前
Python远程获取MD5校验码并在web上显示
一、编写python脚本,远程执行命令获取MD5校验码,脚本放到CGI路径下!/usr/bin/envpythoncoding:utf8"""ThisrunsacommandonaremotehostusingSSH.Atthe
Wesley13 Wesley13
3年前
unity插件开发——AssetDatabase
   AssetDatebase也是一个静态类,他的作用是管理整个工程的所有文件(一般成为“资产”)。直观地说就是管理整个project窗口中的所有内容,比如,你可以增加、删除、修改文件等等。这里有几个常常用到:CreateAsset:创建文件CreateFolder:创建文件夹DeleteAsset:删除文件GetAssetPath:
Wesley13 Wesley13
3年前
Python使用difflib对比两个文件操作实例
codingutf8'''该库用来管理文件。初始化函数调用读取配置文件模块中的Config类用来获取下载路径、保存路径。模块包含四个方法:clearResultCSV():用来删除下载路径下所有的result开头的csv文件moveCSVToSave():把下载路径下的res
小万哥 小万哥
1年前
Python 文件处理指南:打开、读取、写入、追加、创建和删除文件
文件处理是任何Web应用程序的重要部分。Python有多个用于创建、读取、更新和删除文件的函数。文件处理在Python中处理文件的关键函数是open()函数。open()函数接受两个参数:文件名和模式。有四种不同的方法(模式)可以打开文件:"r"读取默认值