标签:string 关闭 function 其他 操作文件 操作系统。 sed 字符编码 针对
计算机系统分为:计算机硬件,操作系统,应用程序三部分。 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:
"""
1、由应用程序向操作系统发起系统调用open(...)2、操作系统打开该文件,并返回一个文件句柄给应用程序3、应用程序将文件句柄赋值给变量f文件句柄 = open(‘文件路径‘, ‘模式‘,‘编码‘)"""#1. 打开文件,得到文件句柄并赋值给一个变量f=open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) # 默认打开模式就为r#2. 通过句柄对文件进行操作con = f.read()print(con)#3. 关闭文件f.close()"""注意:1、回收操作系统级打开的文件f.close()2、编码f=open(...)是由操作系统打开文件,如果没为open指定编码,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8"""#防止忘记不关闭文件推荐用withwith open(‘a.txt‘,‘a+‘,encoding=‘utf-8‘) as f: con = f.write(‘99999999‘) print(con)文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果
将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
import os
with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as read_f,open(‘.a.txt.swap‘,‘w‘,encoding=‘utf-8‘) as write_f: data=read_f.read() #全部读入内存,如果文件很大,会很卡 data=data.replace(‘111‘,‘222‘) #在内存中完成修改 write_f.write(data) #一次性写入新文件os.remove(‘a.txt‘)os.rename(‘.a.txt.swap‘,‘a.txt‘)将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件
import os
with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as read_f,open(‘.a.txt.swap‘,‘w‘,encoding=‘utf-8‘) as write_f: for line in read_f: line=line.replace(‘222‘,‘111‘) write_f.write(line)os.remove(‘a.txt‘)os.rename(‘.a.txt.swap‘,‘a.txt‘)f = open(‘a.txt‘,‘r‘,encoding=‘utf8‘)
print(f.read())f.close()f = open(‘a.txt‘,‘rb‘)print(f.read().decode(‘utf8‘))f.close()f = open(‘a.txt‘,‘w‘,encoding=‘utf8‘)print(f.write(‘hello 合理‘))f.close()f = open(‘a.txt‘,‘wb‘)print(f.write(‘hello 合理‘.encode(‘utf8‘)))f.close()标签:string 关闭 function 其他 操作文件 操作系统。 sed 字符编码 针对
原文地址:https://www.cnblogs.com/Teyisang/p/13775974.html