其他分享
首页 > 其他分享> > 20201217-1 文件修改详解

20201217-1 文件修改详解

作者:互联网

# 对文件的操作,除了常见的读写,还有修改# 如果在源文件修改,会覆盖源文件# 有两个办法,vim 加载到内存中,然后才能进行修改,修改的文件其实是在内存里# 修改后,在写回源文件# 但硬盘不行,中间插一段,数据不会自动往后挤# 另一种方式是,打开一个文件,修改后,写入到新文件中# 不要觉得 low, 只能这么干# 逐行读取,找到后,插入写入新内容# 改完后,全放在新文件里,整个新文件是改后的文件# 边读边写,如果不是需要修改的,写到新文件中,如果是需要修改的,改完后,在写入# 所以,需要同时打开两个文件,一个文件读,另一个文件往里写
1-1# 文件修改# 一定会用到循环,需要打开两个文件# 不要写 r+ 万一不小心写了呢f = open("yesterday","r",encoding="utf-8")
f_new = open("yesterday2.bak","w",encoding="utf-8")for line in f:if "肆意的快乐" in line:
        line = line.replace("肆意的快乐等我享受","肆意的痛苦不断蔓延")
        f_new.write(line)else:
        f_new.write(line)
1-1-2# 有两行一样的代码,如何只出现一次?f = open("yesterday","r",encoding="utf-8")
f_new = open("yesterday2.bak","w",encoding="utf-8")for line in f:if "肆意的快乐" in line:
        line = line.replace("肆意的快乐等我享受","肆意的痛苦不断蔓延")
    f_new.write(line)# 这样做,是否可行呢?# 这样一句话就搞定了f.close()
f_new.close()--->喔, 我宁回昨日
肆意的快乐等我享受
突然间 我迷失了自己

喔, 我宁回昨日
肆意的痛苦不断蔓延
突然间 我迷失了自己# 如果不想出现两个文件,移回新文件就好了

 

with 语句

前面的程序都是忘记关闭的。虽然程序执行完成后,会自动帮你去关闭。

既然能自动关闭,为什么我还要去关闭呢?

虽然程序结束后,python 自带的垃圾回收机制会帮你自动关闭文件。

但是,如果你的程序运行了,打开1000个文件没有关闭,只要你的程序不退出,打开的文件句柄就不会被清空,就会一直在内存中占有一个空间。

虽然这个空间不会特别大,但是不断的累积会导致越来越大,造成不必要的空间浪费。

比如 winXP 机器配置本来不好,打开几十个文件不关闭,机器就会越来越慢。

所以,打开的文件,应该及时关闭操作完后,就关闭。但是还是会忘记,怎么办?新的方法,用 with。

with open('log','r') as f:

1-1
   (f.readline())    
1-1-2with open(,,encoding= line

 

1-2# 在 Python 2.7 后,with 又支持同时对多个文件的上下文进行管理,即:with open('log1') as obj1, open('log2') as obj2:pass# Python 官方的开发规范说,一行代码不应该超过 80 个字符1-2-1# 为了方便观看,建议用一下的方式 (换行??)with open("yesterday2","r",encoding="utf-8") as f,\
    open("yesterday2","r",encoding="utf-8") as f2:# 为了清晰,如果你同时打开多个文件,建议也这么写pass

标签:文件,encoding,修改,详解,new,20201217,line,open,肆意
来源: https://blog.51cto.com/u_15149862/2714686