1、文件处理
在Python中处理文件的关键功能是open()
函数。
open()
函数采用两个参数;filename和mode。
打开文件有四种不同的方法(模式):
"r"
-读取-默认值。 打开文件进行读取,如果文件不存在则错误"a"
-附加-打开文件进行追加,如果文件不存在则创建文件"w"
-写入-打开文件进行写入,如果不存在则创建文件"x"
-创建-创建指定的文件,如果文件存在则返回错误
另外,您可以指定文件应以二进制还是文本模式处理
"t"
- 文本 - 默认值. Text mode。 "b"
- 二进制 - Binary mode (例如,图片文件)
2、open()函数
要打开一个文件进行读取,只需指定文件的名称:
f = open("demofile.txt")
与上面的代码相同的写法:
f = open("demofile.txt", "rt")
因为用于读取的"r"
和用于文本的"t"
是默认值,所以您无需指定它们。
注意:确保文件存在,否则会收到错误消息提示。
mode 参数有:
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件, 如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。 文件的指针将会放在文件的开头。 这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。 文件指针将会放在文件的开头。 这是默认模式。 一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。 文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。 文件指针将会放在文件的开头。 一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。 如果该文件已存在则打开文件, 并从开头开始编辑, 即原有内容会被删除。 如果该文件不存在, 创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。 如果该文件已存在则打开文件, 并从开头开始编辑, 即原有内容会被删除。 如果该文件不存在, 创建新文件。 一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。 如果该文件已存在则打开文件, 并从开头开始编辑, 即原有内容会被删除。 如果该文件不存在, 创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。 如果该文件已存在则打开文件, 并从开头开始编辑, 即原有内容会被删除。 如果该文件不存在, 创建新文件。 一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在, 文件指针将会放在文件的结尾。也就是说, 新的内容将会被写入到已有内容之后。 如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。 如果该文件已存在, 文件指针将会放在文件的结尾。也就是说, 新的内容将会被写入到已有内容之后。 如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在, 文件指针将会放在文件的结尾。 文件打开时会是追加模式。 如果该文件不存在, 创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。 如果该文件已存在, 文件指针将会放在文件的结尾。如果该文件不存在, 创建新文件用于读写。 |
默认为文本模式,如果要以二进制模式打开,加上b
。
3、Python2与python3 打开文件的区别
在python3中操作文件只有一种选择就是open()
,而在python2中则有两种方式:file()
与open()
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()
来打开文件,相当于这是在构造文件类,而用open()
打开文件,是用python的内建函数来操作,我们一般使用open()
打开文件进行操作,而用file
当做一个类型,例如,
type(f) is file