一、文件与文件模式介绍
1、什么是文件
文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口
用户/应用程序(open())
操作系统(文件)
计算机硬件(硬盘)
2、为何要用文件
①用户/应用程序可以通过文件将数据永久保存的硬盘中,即操作文件就是操作硬盘;
②用户/应用程序直接操作的是文件,对文件进行的所有的操作,都是在向操作系统发送系统调用,然后再由操作将其转换成具体的硬盘操作;
3、如何用文件:open()
控制文件读写内容的模式:t和b
强调:t和b不能单独使用,必须跟r/w/a连用
t文本(默认的模式)
1、读写都以str(unicode)为单位的
2、文本文件
3、必须指定encoding=‘utf-8’
b二进制/bytes
控制文件读写操作的模式
r只读模式
w只写模式
a只追加写模式
+:r+、w+、a+
二、文件操作基本
1、打开文件
windows路径分隔符问题
open(‘C:\a.txt\nb\c\d.txt’)
解决方案一:推荐
open(r’C:\a.txt\nb\c\d.txt’)
解决方案二:
open(‘C:/a.txt/nb/c/d.txt’)
注: f的值是一种变量,占用的是应用程序的内存空间
f=open(r'aaa/a.txt',mode='rt')
print(f)
x=int(10)
2、操作文件
读/写文件,应用程序对文件的读写请求都是在向操作系统发送系统调用,然后由操作系统控制硬盘把输入读入内存、或者写入硬盘
res=f.read()
print(type(res))
print(res)
3、关闭文件
f.close() # 回收操作系统资源,这是操作系统的东西,关闭了刚打开的文件,但python关闭不到,所以不可省略
print(f)
f.read() # 变量f存在,但是不能再读了,因为操作系统已经将文件f.close()关闭了
#del f # 回收应用程序资源,在python3中不需要这一步,因为Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题,并且通过“分代回收”(generation collection)以空间换取时间的方式来进一步提高垃圾回收的效率。
4、with上下文管理
文件对象又称为文件句柄
句柄,理解为手柄,手柄控制游戏任务,所以类比,句柄操控操作系统
with open('a.txt',mode='rt') as f1: # f1=open('a.txt',mode='rt')
res=f1.read()
print(res)
with open('a.txt',mode='rt') as f1,\ # 这里注意:一行代码太长,使用‘\’进行分割换行,回车
open('b.txt',mode='rt') as f2:
res1=f1.read()
res2=f2.read()
print(res1)
print(res2)
# f1.close() with 语法已经将f1/f2关闭,这两步可以省略
# f2.close()