打开文件
在读写文件前需要先打开文件
用open打开一个文件
1 2 3 4 5 6 7 8 |
|
- 前面一个参数是指:需要打开哪个文件
- 后面一个参数是指:打开方式
r:read,按照读方式打开w:write,按照写方式打开a:append,按照写方式打开,把内容写到原有文件内容的末尾
open的返回值是一个文件对象,f相当于是file的缩写
- 文件的内容,是在硬盘上的
- 此处的文件对象,则是内存上的一个变量
- 后续读写文件操作,都是拿着这个文件对象来进行操作的
此处的文件对象就像一个“遥控器”一样,计算机中,也把这样的远程操控的“遥控器”称为“句柄”(handler)
关闭文件
文件在打开完之后,使用完之后,一定要关闭!
打开文件,其实是在申请一定的系统资源。不再使用文件的时候,资源就应该及时释放
否则就可能造成文件资源泄露,进一步导致其他部分的代码无法顺利打开文件了
正是因为一个系统的资源是有限的,因此一个程序能打开的文件个数也是有上限的
1 |
|
文件打开的上限
1 2 3 4 5 6 7 8 |
|
- 在系统中,可以通过一些设置项,来配置能打开文件的最大数目
- 但无论配置多少,都不是无穷无尽的,所以需要记得及时关闭文件,释放资源
- 这里将文件对象放入数组
File中,是为了避免产生垃圾回收- 垃圾回收(
GC)是Python的一个重要机制,自动把不用的变量给释放掉 - 如果不将每次打开的文件对象放入
FIle中,那么前面打开的文件对象就会由于没有使用而被自动释放,最后导致文件在不关闭的情况下可以一直打开
- 垃圾回收(
写文件
使用r方式打开文件
1 2 3 4 |
|
文件会抛出异常
使用w的方式打开文件
1 2 3 4 5 6 7 8 |
|
- 最后所打开的文件中写入了‘
world’ - 如果使用
w打开文件之后,会清空原文件中的内容,再进行后续写操作
使用a的方式打开文件
1 2 3 4 5 6 7 |
|
此时原有内容不变,写入的内容会存在于之前文件内容的末尾(追加写)
读文件
中文和英文类似,在计算机中,都是使用“数字”来表示字符的。但具体是那个数字对应哪个汉字是有多个版本的,主流的是:
GBKUTF8
在实际开发的时候,就需要保证,文件内容的编码方式和代码中操作文件的编码方式是匹配的,所以需要再打开文件的时候指定编码方式
按字符数量读取
1 2 3 4 5 6 7 8 9 |
|
按行来读取
最简单的方法,就是直接使用for循环
1 2 3 4 5 6 7 8 9 10 11 12 |
|
- 之所以多了空行,是因为本来读取到的文件内容(这一行内容,末尾就带有
\n) - 此处使用
print打印,又会自动添加换行的行为