当我们要读取或者写入文件时,我们需要打开文件,在操作完毕时,我们需要关闭文件,以便释放和文件操作相关的系统资源。因此,文件操作的主要包括以下:
注意:可以只打开和关闭文件,不进行任何读写操作。
在Python中,使用open( )函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
# 文档中语法如下open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, opener=None)# 我们可以看到这个open( )函数有很多的参数# 但是我们也可以看到处了第一个参数,其他的都是关键字参数# 也就是说,除了第一个必填,其他的都可以不填写。# 但是我们在实际开发中,比较常用的就是前两个选项。open(name, mode)name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。mode:设置打开文件的模式(访问模式),只读、写入、追加等。在Python中,文件的打开模式如下表:
| 模式 | 描述 |
|---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头(相当于光标所在的位置)。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。(文件指针在开头,覆盖文件) |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。(文件指针在内容的结尾处,方便追加内容) |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
说明:
- 主要的三种打开模式为
r、w、a。
- 凡事带
+都是可读可写模式。- 凡事带
b的都是以二进制格式打开文件。- 所有的访问模式的基础特点都要遵循三种猪访问模式
r、w、a。x模式x模式用来新建文件,如果文件不存在则创建,存在则报错。
如果想创建一个文件,不想覆盖已有的文件,就可以选择这个操作文件的方式。b和t
t是以纯文本方式打开文件,默认就是t。b是以二进制方式打开文件。
关于打开文件模式的官方文档,在[The Python Standard Library] —> [Built-in Functions] —> 内置方法列表中选择[open()]。
文档内容如下图所示:

也就是打开一个文件。
# open()函数返回一个对象,这个对象就代表了当前打开的文件。# file_obj是一个文件对象,文件打开状态file_name= 'test.txt'file_obj = open(file_name, 'r')# <class '_io.TextIOWrapper'>print(type(file_obj)) # <_io.TextIOWrapper name='test.txt' mode='r' encoding='cp936'>print(file_obj)注意:此时的
file_obj是open( )函数返回的文件对象。
只要没有报错,就证明文件打开了。
当我们获取了文件对象以后,所有的对文件的操作都应该通过对象来进行。
..来返回一级目录,也就是上一级目录。/来代替\,在Python中会自动转换,\\ 来代替 \,file_name = r'hello\demo.txt'。r,是字符串原样输出,不加任何转义。file_name = r'C:\Users\123\Desktop\hello.txt'