【Python】:如何利用 Python 实现文件操作
1、前言
大家好,我是翼同学。今天的笔记内容为:
Python 的文件操作
文件一般可以分为两种:
文本文件(基于字符编码,如 Ascii 编码,Unicode 编码等)
二进制文件(基于值编码,如声音、图像等文件)
而有关文件的相关操作有:
打开文件
操作文件
关闭文件
2、打开文件
在Python
中,我们使用open()函数
来打开一个文件,其会并返回一个文件对象。
✨open()函数
基本语法
open(file, mode, buffering)
参数解释
file
:必填项,表示要打开文件的路径。
mode
:可选项,表示打开文件的访问方式。
buffering
:可选项,表示表示文件读写时是否需要缓冲。返回类型
file对象
✨mode 参数
mode
是open()函数
里的参数,是一个字符串,其表示对文件的访问方式。
具体如下:
🌳----'r'
r
: 以只读的方式访问文件(这是open()函数
的默认文件打开方式);
rb
:以二进制模式打开文件并且只读;
r+
:打开一个文件并用于读写;
rb+
:以二进制模式打开文件并且用于读写 .
🌳----'w'
w
:写入模式;
wb
:以二进制格式打开文件并用于写入;
w+
:读写模式;
wb+
:以二进制格式打开文件并用于读写。
注意事项:
如果用
w模式
打开文件,则表示要编写文件;但需要注意,系统会先判断要打开的文件是否存在;
如果并不存在,则创建新文件并编写
如果已经存在,则删除原有内容并从头编。
🌳----'a'
a
:更新文件,即追加内容(如果文件不存在则会创建新文件并用于写入)
ab
:以二进制格式打开文件并用于追加内容;(如果文件不存在则会创建新文件并用于写入)
a+
:读写模式,可追加内容;(如果文件不存在则会创建新文件并用于读写)
ab+
:以二进制格式打开文件并用于追加内容;(如果文件不存在则会创建新文件并用于读写)
✨mode 参数小结
我们提供一个参数给open()函数
,其会返回一个文件对象,并且是只读的文件对象(默认的)。
如果需要将数据写入文件中,则必须通过mode
参数来提供文件的访问方式。比如'r'
表示只读模式,这是mode
参数的默认值,'w'
模式可以往文件中写入数据,需要注意的是,通过'w'
模式打开的文件,其文件的原有内容会被删除掉(即数据的覆盖)。'a'
模式可以往文件的末尾追加数据。还有一点,'+'
可以和以上三种模式配合使用,表示可以同时读和写。
注意,'w+'
和'r+'
区别:
打开文件后,
'w+'
模式下的文件原始数据会被删除掉(或者说被覆盖了);而'r+'
模式和'a+'
模式则不会删除文件原有数据。如果要打开的文件不存在,
'r+'
模式打开则会产生异常。而'w+'
模式和'a+'
模式打开都是新建一个文本文件。
最后一点,用'b'
模式打开的一般为二进制文件,在Python
中,默认打开的是文本文件。如果需要处理二进制文件,则需要提供'b'
给mode
参数。比如'rb'
用于读取二进制文件。
✨buffering 参数
buffering
参数可控制文件读写时是否需要缓冲。
该参数是可选项,如果不提供参数,则其值默认为
1
;若将
buffering
参数取为0
,则无缓冲。即直接将数据写入磁盘文件;若将
buffering
参数取为1
,则表示有行缓冲,即碰到换行就会将数据写入磁盘中;如果将
buffering
参数取大于1
的数,则该数表示所取缓存区中的字节数;如果将
buffering
参数设置为负数
,则表示使用默认缓存区的大小。注意,当
buffering
参数的值取大于1
或负数
时,缓冲区不满时,数据是不会写入磁盘的,直到缓冲区满了或者使用flush()
方法或close()
方法将缓冲区的数据强制写入磁盘内。
✨代码示例
示例一
如果在D盘
的根目录下有一个文件为'test.txt'
,那么我们可以使用下列语句来打开这个文件:
但是,如果 D 盘下并没有该文件,则会报错。
如下所示:
示例二
我们使用语句来打开一个文件,并以'w'
模式(即写入模式)打开,那么即使该文件不存在,系统也不会报错,而是会创建一个新的文件
3、操作文件
操作文件一般分为:
读取文件
写入文件
🟪读取文件
当open()
方法在'r+'
,'r+'
,'w+'
,'a+'
等模式打开文件后,可以放回一个文本文件对象,我们可以对文件进行读取操作。
具体方法有:
read(n)
:读取文件中指定 n 长度的字符,若不提供 n,则读取文件中的所有字符。
readline(n)
:逐行读取字符,读取这一行中的 n 个字符;如果不提供 n,则默认读取一行。
readlines()
:读取文件中的所有行,并将这些行组成一个列表并返回;
📙示例
假设我在 D 盘的根目录下有一个文件:'python_work.txt'
,如下所示:
里面的内容是:
那么现在,我们用 Python 来实现对文本文件的读取。
read()方法
:
readline()方法
:
readlines()方法
:
🟫写入文件
当open()
方法在'r+'
,'w'
,'w+'
,'a+'
等模式打开文件后,可以放回一个文本文件对象,我们可以对文件进行写入操作。
具体方法有:
write(str)
:该方法用于向文件中写入指定字符串,即将字符串str
写入文本中;
writelines(str)
:str
为字符串列表,该方法将列表中的每一个元素作为一行,逐行写入文本中。
📘示例
比如说在 D 盘的根目录下的有一个文件如下所示:
此时我们对文件进行写入操作:
write()
方法
文件操作完后,效果如下所示:
由上可以证明,用w+模式
打开的文件,其原有数据会被清空(或者说覆盖)。
文件操作完后,效果如下所示:
4、关闭文件
注意,对文件进行读写操作后,必须使用close()方法
来关闭文件,把缓冲区的数据写入磁盘内,进而释放内存资源。
也就是说,close() 方法
用于关闭一个已打开的文件。并且无参数,也无返回值,其允许被调用多次。
需要注意的是,关闭后的文件无法再进行读写操作, 否则会触发ValueError
错误。
5、写在最后
好了,今天的笔记就到这里,欢迎大家到评论区一起讨论!
版权声明: 本文为 InfoQ 作者【翼同学】的原创文章。
原文链接:【http://xie.infoq.cn/article/f53e8de4b3be0f1db4cd9c414】。文章转载请联系作者。
评论