先上一段最基本的代码:
假定我们有一个文本文件 test.txt,内容如下:
123
abc
xxxxx
|
打印结果如下:
>>> 123
abc
xxxxx
这段代码逐行输出了文件的内容。看起来有点神奇,for...in... 居然还能这样使用。
我们再来打印一下 f,看看会输出什么
|
结果如下:
>>> <_io.TextIOWrapper name='test.txt' mode='r' encoding='UTF-8'>
这个结果大致包含了四个信息:
打开的文件以 io.TextIOWrapper 这个 class 呈现,f 可以说是一个 file 对象
文件名 test.txt
模式 r
编码 UTF-8
其中,mode='r' 和 encoding='UTF-8' 是 open 的默认参数,encoding 无需解释,现在我们一起看下 mode='r' 究竟是何方神圣
r 其实是文件的默认打开方式。即以只读方式打开文件,文件的指针将会放在文件的开头
下面就简单说一下文件打开的几种模式:
r (read)默认打开方式,以只读方式打开文件,文件的指针将会放在文件的开头
w (write)打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a (append)打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
x (create)写模式,新建一个文件,如果该文件已存在则会报错。
上面这三种模式是最基础的四种模式,使用模式的时候至少包含一种。下面介绍几种辅助的模式:
t 文本模式 (默认)
b 二进制模式
+ 打开一个文件进行更新(可读可写)
上面的三种模式与基础模式组合使用,比如 a+ 表示:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
补充一个额外的知识,with 语句给文件创建了一个上下文,在 with 控制块结束的时候会自动关闭文件。如果不使用 with,则需要手动关闭,例如:
|