什么是文件?
文件是操作系统提供给用户/应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间
为何要处理文件
用户/应用程序直接操作文件(读写)就是被操作系统转换成具体的硬盘操作,从而实现用户/应用程序的将内存中的数据永久保存到硬盘
怎么使用文件操作
# 文件处理的三个步骤
# f=open(r'c.txt',mode='r',encoding='utf-8') # 文件对象(应用程序的内存资源)------》操作系统打开的文件(操作系统的内存资源)
# # print(f)
# data=f.read()
# f.close() # 向操作系统发送信号,让操作系统关闭打开的文件,从而回收操作系统的资源
文件操作的基本格式:
参数说明:
第一参数是文件的路径(可以使用绝对路径和相对路径两种)r加在字符串前面的意思是字符串内转义符没有使用。
第二参数是读取的方式。主要有r,w,a,rb,wb,ab等
第三参数是设定解码的字符编码。用于r,w,a 模式下。
f是文件操作的对象,存在应用程序的内存中,同时操作系统也在内存中开辟对文件操作的内存空间。
f.close()就是为了帮助操作系统将对文件操作的内存空间释放掉。
上下文管理
上下文管理的作用,就是将内存的释放交由with关键字自动释放。减少每次f.close()的繁琐
示例:
# with open(r'c.txt',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f1: # 读写文件的操作 # pass
如何使用文件操作:本章中只演示r rb的功能
r (rt)只读文本模式模式,需要指定相应文件的解码字符编码,只能读文本格式文件,直接读取Unicode
只读模式,在文件不存在时则报错,如果文件存在文件指针跳到文件的开头
with open(r'c.txt',mode='rt',encoding='utf-8') as f: print(f.read())#读取文本所有内容 print(f.readable())#是否可读 print(f.writable())#False f.write('hello') #报错,只能读不能写
rb 只读二进制模式,不需制定相应的字符编码,所有格式的文件都可以读出来,将硬盘中保存的二进制加载如内存中
with open(r'c.txt',mode='rb') as f: data=f.read() # print(data,type(data))#Bytes格式 res=data.decode('utf-8')#解码成为unicode二进制 print(res)
read() readline() readlines()的区别
read将整个文件内容全读出来,readline()是根据 逐行读取。readlines()是依据 划分为列表
with open(r'c.txt',mode='rt',encoding='utf-8') as f: # line=f.readline() # print(line,end='') # line1=f.readline() # print(line1,end='') # line2 = f.readline() # print(line2,end='') lines=f.readlines() print(lines) with open(r'c.txt',mode='rt',encoding='utf-8') as f: line=f.readline() print(line,end='')
for循环逐条读取内容
with open(r'c.txt',mode='rt',encoding='utf-8') as f: for line in f: print(line,end='')