(一)文件操作步骤
当我们要读取或者写入文件时,我们需要打开文件,在操作完毕时,我们需要关闭文件,以便释放和文件操作相关的系统资源。因此,文件操作的主要包括以下:
- 打开文件
- 读写等操作
- 关闭文件
注意:可以只打开和关闭文件,不进行任何读写操作。
(二)文件的读写操作
1、文件的打开
在Python中,使用open( )
函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
# 文档中语法如下
open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, opener=None)
# 我们可以看到这个open( )函数有很多的参数
# 但是我们也可以看到处了第一个参数,其他的都是关键字参数
# 也就是说,除了第一个必填,其他的都可以不填写。
# 但是我们在实际开发中,比较常用的就是前两个选项。
open(name, mode)
-
name
:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 -
mode
:设置打开文件的模式(访问模式):只读、写入、追加等。
2、打开文件模式
在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()]
3、获取一个文件对象
也就是打开一个文件。
# 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( )
函数返回的文件对象。
只要没有报错,就证明文件打开了。
当我们获取了文件对象以后,所有的对文件的操作都应该通过对象来进行。
4、关于文件路径
如果目标文件和当前文件在同一级目录下,则直接使用文件名即可。
可以使用
..
来返回一级目录,也就是上一级目录。-
在windows系统使用路径时,可以使用
/
来代替\
,在Python中会自动转换,或者可以使用
\\
来代替\
,或者也可以使用原始字符串,如
file_name = r'hello\demo.txt'
。也就是在字符串前面加上一个小写的
r
,是字符串原样输出,不加任何转义。 -
如果目标文件距离当前文件比较远,此时可以使用绝对路径。
绝对路径应该从磁盘的根目录开始书写,如
file_name = r'C:\Users\123\Desktop\hello.txt'