文件操作简介:
对于文件的基本操作,我们首先将思路要理清楚,再复杂的文件操作一定是围绕以下步骤进行的:
文件的打开操作---->文件的读写操作------>文件的关闭操作
而对于文件操作中让不少人所害怕的无非是文件打开时的访问模式以及各式各样的文件读写函数,本文将对部分基础函数以及基础访问方法进行详细的介绍。
注意:本文将使用Python介绍文件操作
文件的打开/关闭操作:
文件打开格式: 变量 = open('文件名/文件路径', '访问模式')
文件关闭格式: 变量.close()
在每次打开文件后一定要记得将文件关闭,否则内存占用率升高,计算机整体性能下降。(类似于在堆区开辟空间后要及时进行释放)
在文件打开操作中最零散的知识点莫过于访问模式这一项了,接下来我们将进行访问模式的讲解,但在讲解各个访问模式之前,我们引入 '文件的写入函数' 以便于我们更好的测试访问模式的功能。
文件的写入操作:
文件写入格式: 变量.write( 写入内容 )
访问模式:
对于访问模式,我们可以理解为:
访问模式 = 三种基本访问模式 + 多种延伸访问模式
下表引自python菜鸟教程:Python3 File 方法 | 菜鸟教程 (runoob.com)
模式 描述 t 文本模式 (默认)。 x 写模式,新建一个文件,如果该文件已存在则会报错。 b 二进制模式。 + 打开一个文件进行更新(可读可写)。 U 通用换行模式(Python 3 不支持)。 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
在本文中我们主要介绍三大基础访问模式:'r' 'w' 'a' 它们分别对应 读 写 追加
接下来我们将对他们的特性进行测试:
测试列表:
1.在文件不存在的情况下,使用该种访问模式对文件操作会出现什么样的情况?文件存在的情况下,使用该种访问模式会出现什么情况?
2.文件成功打开的前提下,对文件进行写入操作时,会出现什么样的情况?
3.在可以成功执行写入操作的前提下,每次写入的内容会出现什么情况?
4.在文件打开操作中,如果不写访问模式,编译器是否报错;如不报错,默认的访问模式又是什么?(最后测试)
--------------------------------------------平平无奇分割线--------------------------------------------------
r模式:
r模式是用只读的方法打开文件
测试1:
----> 在文件不存在时,以只读模式访问编译器报错:No such file or directory: '1.txt'
----> 文件存在时,编译器未报错
测试2:
编译器报错:not writable
测试3无法进行
r访问模式测试结束
----------------------------------------------------平平无奇分割线--------------------------------------------------------
w模式:
w访问模式用于进行文件内容的写入
测试1:
----> 在打开文件夹中不存在的文件时,文件自动被创建,编译器未报错
----> 在打开已存在文件时,编译器未报错
测试2:
写入成功,编译器未报错
测试3:
重复进行写入操作,观察现象:
第一次被写入的内容被第二次写入的内容所取代,即每次进行写文件操作的位置都在文件的开头位置,旧内容会被新内容所取代
----------------------------------------------------平平无奇分割线-------------------------------------------------------
a模式:
a用于打开一个文件用于追加内容
测试1:
-----> 以‘a’模式打开一个不存在的文件时,这个不存在的文件被创建出来,编译器不报错
-----> 打开一个存在的文件,编译器不报错
测试2:
写入成功,编译器未报错
测试3:
第二次的内容追加到了第一次输入的内容后,说明以‘a’方式打开的文档可以进行多次内容的叠加
----------------------------------------------------平平无奇分割线-------------------------------------------------------
测试4:
根据下面的测试数据不难得出结论:
当不指定访问模式时,python的默认访问方式是 ‘r’模式
-----------------------------------------------内容即将结束提示线------------------------------------------------------
基本操作总结:
文件的打开操作---->文件的读写操作------>文件的关闭操作
文件打开格式: 变量 = open('文件名/文件路径', '访问模式')
文件关闭格式: 变量.close()
在每次打开文件后一定要记得将文件关闭,否则内存占用率升高,计算机整体性能下降。
文件写入格式: 变量.write( 写入内容 )
访问模式总结:
r:如果文件不存在在,则报错;不支持写入操作,表示只读
w:只写,如果文件不存在,则会创建文件;且每次执行写入操作都会覆盖原有内容
a:追加,如果文件不存在,则会新建文件;
访问模式是否可以省略:可以省略
省略访问模式默认为:只读访问模式( r )
对于延伸的访问模式:带有+意味可以进行读写操作;带有b意味着文件内容以二进制呈现
测试列表:(可以自己进行测试 加深理解)
测试列表:
1.在文件不存在的情况下,使用该种访问模式对文件操作会出现什么样的情况?文件存在的情况下,使用该种访问模式会出现什么情况?
2.文件成功打开的前提下,对文件进行写入操作时,会出现什么样的情况?
3.在可以成功执行写入操作的前提下,每次写入的内容会出现什么情况?
4.在文件打开操作中,如果不写访问模式,编译器是否报错;如不报错,默认的访问模式又是什么?(最后测试)
--------------------------------------------------内容结束提示线---------------------------------------------------------