Python 修改文件

Posted 柠檬Lamon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 修改文件相关的知识,希望对你有一定的参考价值。

一、有时候我们会遇到在写入文件后,其实内容并未被写到文件里面的问题

#原因是内容先写到缓冲区,缓冲区满时,才写入磁盘

#解决:用f.flush()强制把缓冲区里面的数据写到磁盘上

fw = open(username.txt,w)

fw.write(测试)

fw.flush()

二、修改文件简单直接的方法(replace()),此方法当文件内容较多时,效率不高,会出现内存溢出的情况

1、打开一个文件,获取到文件的内容read方法(返回类型是str)

2、对内容进行修改

3、清空原来的内容truncate方法

4、把新的内容写到文件

f= open(username.txt,a+)
f.seek(0)#a+模式文件指针默认在文件末尾,用seek(0)将文件指针放到开头
all_str = f.read()#返回类型是str,当文件内容较多时,效率不高
new_str = all_str.replace(123456,789012)#替换文件内容
f.seek(0)
f.truncate()#清空文件内容 f.write(new_str)#将修改后的文件内容写入文件 f.close()#关闭文件

修改文件内容中举例:给文件中的用户名前统一加值test_

 f = open(username.txt,a+)
 f.seek(0)
all_str = ‘‘#每次循环的时候把字符串拼接起来,然后最后写入文件
for line in f:#f.readlines()把文件里面所有的东西一次都读出来放到list里面,文件大的话效率不高
     new_line = ‘test_ + line
     all_str += new_line
 f.seek(0)
 f.truncate()#清空文件内容
 f.write(all_str)
 f.close()

 三、以上修改文件方法当文件小时用起来是比较方便的,但文件大时效率不高,以下介绍一种效率比较高的方法

1、打开两个文件
2、a文件,一行一行修改
3、写一行写到b文件
4、a.txt a.txt.bak
5、删除a文件,b文件的名字改为a文件名
#f.write()只能写字符串
# f.writelines()循环写入,会帮助咱们循环list写入
import os
with open(words,encoding=utf-8) as fr,open(.words.bak,w,encoding=utf-8) as fw:
    for line in fr:
        new_line = line.replace(测试,test)
        fw.write(new_line)
os.remove(words)#删除文件
os.rename(.words.bak,words)#改名

 



以上是关于Python 修改文件的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?

常用python日期日志获取内容循环的代码片段

使用 Python 代码片段编写 LaTeX 文档

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段