什么是文件?
- 文件类型:mp4(视频)、mp3(音乐)、jpg(图片)、txt(文本)、xlsx(表格)
- 内存空间小、访问速度快、成本更贵、数据易失;磁盘反之
- 硬盘上的数据以文件的形式来组织
- 文件夹(目录)也是一种文件:目录文件
- 不同的文件类型存储数据的差异很大,我们目前重点学习文本文件
文件路径
- 文件路径:标识文件在计算机硬盘中的位置的字符串表示,由一系列目录名和文件名组成,通过特定的分隔符连接(在Windows中使用反斜杠\,在Linux中使用正斜杠/)
- 文件路径使用正斜杠的更多,Windows也支持正斜杠(反斜杠在字符串中是具有特定含义的转义字符)
- 文件路径可以视为文件在硬盘上的身份标识
- 文件路径分为绝对路径和相对路径
- 绝对路径:从根目录开始的完整路径,能够唯一确定一个文件的位置
- 相对路径:相对于当前工作目录的路径,使用起来较为方便
打开文件
- 文件的操作:打开文件、读/写文件,关闭文件
- open的返回值是一个文件对象,对文件的操作都是依据这个文件对象进行的
- 文件的内容在硬盘上,文件对象则是内存上的一个变量
- 文件对象就像是一个“遥控器”(董卓和曹操的“挟天子以令诸侯”),计算机中我们可以理解为句柄(handle)
关闭文件
- 文件在打开使用完之后,一定要及时关闭(文件打开实际上是申请了系统资源的)
- 一个系统的资源有限,所以一个程序能够打开的文件个数也是有上限的
- 系统中可以配置一些设置,来调整能够打开的最大文件数量
- 8189 + 3 = 8192(2的13次方)
- 上述的3个文件分别指的是标准输出、标准输入和标准错误(程序启动时默认打开的三个文件)
- 文件资源泄露是一个重要的问题,悄无声息且难以防范
- Python中有一个垃圾回收机制(GC),自动将不使用的变量进行释放(尽量手动释放,不依赖系统的机制)
文件的写操作
使用 write 来实现写文件的操作(以 w 的方式)
使用 write 来实现写文件的操作(以 a 的方式)
a 代表追加,这种方式不会覆盖原来的内容
文件的读操作
- 使用 read( ) 方法读取,参数表示读取几个字符(Python中一个汉字代表一个字符)
- 中文和英文在计算机中都是使用“数字”来表示的(中文的表示方式有很多的版本)
- 实际开发中,文件内容的编码方式和代码中操作文件的编码方式需要匹配
- 相比于gdk,utf8使用更为广泛
for循环按行读取
使用readlines()读取整个文件的内容,然后按行组织到一个列表中
上下文管理器
- 打开文件之后非常容易忘记关闭,Python提供上下文管理器来自动关闭文件
- with 语句用于打开文件,with 内部的代码块执行完毕后,就会自动调用文件关闭的方法