一、文件的概念
变量是把数据保存到内存中. 如果程序重启/主机重启, 内存中的数据就会丢失.
要想能让数据被持久化存储, 就可以把数据存储到硬盘中. 也就是在 文件 中保存
通过文件的后缀名, 可以看到文件的类型. 常见的文件的类型如下:
- 文本文件 (txt)
- 可执行文件 (exe, dll)
- 图片文件 (jpg, gif)
- 视频文件 (mp4, mov)
- office 文件 (.ppt, docx)
- …
二、文件的路径
一个机器上, 会存在很多文件, 为了让这些文件更方面的被组织, 往往会使用很多的 “文件夹”(也叫做目录) 来整理文件.
实际一个文件往往是放在一系列的目录结构之中的。为了方便确定一个文件所在的位置, 使用 文件路径 来进行描述
三、文件操作
要使用文件, 主要是通过文件来保存数据, 并且在后续把保存的数据读取出来
但是要想读写文件, 需要先 “打开文件”, 读写完毕之后还要 “关闭文件”
3.1 打开文件
使用内建函数 open 打开一个文件
f = open('d:/test.txt', 'r')
- 第一个参数是一个字符串, 表示要打开的文件路径
- 第二个参数是一个字符串, 表示打开方式. 其中 r 表示按照读方式打开. w 表示按照写方式打开. a 表示追加写方式打开
- 如果打开文件成功, 返回一个文件对象. 后续的读写文件操作都是围绕这个文件对象展开
- 如果打开文件失败(比如路径指定的文件不存在), 就会抛出异常
3.2 关闭文件
使用 close 方法关闭已经打开的文件
f.close()
使用完毕的文件要记得及时关闭!!!
3.3 写文件
文件打开之后, 就可以写文件了
- 写文件, 要使用写方式打开, open 第二个参数设为 ‘w’。使用 write 方法写入文件
f = open('d:/test.txt', 'w') f.write('hello') f.close()
- 如果是使用 ‘r’ 方式打开文件, 则写入时会抛出异常
- 使用 ‘w’ 一旦打开文件成功, 就会清空文件原有的数据
- 使用 ‘a’ 实现 “追加写”, 此时原有内容不变, 写入的内容会存在于之前文件内容的末尾
- 针对已经关闭的文件对象进行写操作, 也会抛出异常
3.4 读文件
- 读文件内容需要使用 ‘r’ 的方式打开文件
- 使用 read 方法完成读操作. 参数表示 “读取几个字符”
- 如果文件是多行文本, 可以使用 for 循环一次读取一行
注意: 由于文件里每一行末尾都自带换行符, print 打印一行的时候又会默认加上一个换行符, 因此打印结果看起来之间存在空行.
使用 print(f’line = {line}’, end=’’) 手动把 print 自带的换行符去掉 - 使用 readlines 直接把文件整个内容读取出来, 返回一个列表. 每个元素即为一行
f = open('d:/test.txt', 'r') lines = f.readlines() print(lines) f.close()
四、关于中文的处理
当文件内容存在中文的时候, 读取文件内容不一定就顺利
给 open 方法加上 encoding 参数, 显式的指定为和文本相同的字符集
f = open('d:/test.txt', 'r', encoding='utf8')
五、使用上下文管理器
打开文件之后, 是容易忘记关闭的. Python 提供了 上下文管理器 , 来帮助自动关闭文件.
使用 with 语句打开文件. 当 with 内部的代码块执行完毕后, 就会自动调用关闭方法
with open('d:/test.txt', 'r', encoding='utf8') as f:
lines = f.readlines()
print(lines)