Python内置了读写文件的函数,用法和C是兼容的。本节介绍内容大体有:文件的打开/关闭、文件对象、文件的读写等。python
本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也须要注意编码问题;其余文件的读写及编码相关详见专题的博文。程序员
看如下示例就能了解 Python 的 open() 及 close() 函数。这边调用 read()方法能够一次读取文件的所有内容,Python把内容读到内存,用一个str对象表示,具体使用参见下文。ide
在 E 盘 python_file 文件夹下新建一 a.txt,输入随意,以下:函数
Python 操做 打开及关闭方式 以下:学习
注意 open() 以后 必定要 close()。但因为文件读写时均可能产生IOError,为了保证不管是否出错都能正确地关闭文件,咱们用 try ... finally 来实现:编码
python 简化了改写法,即用 with open(...) as ... ; 建议以后文件读写都用该写法:spa
上面,你确定注意到了参数 "r";该参数决定了打开文件的模式:只读,写入,追加等。全部可取值见以下的彻底列表。这个参数是非强制的,默认文件访问模式为只读(r)。指针
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
wb | 以二进制格式打开一个文件只用于写入。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
w+ | 打开一个文件用于读写。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。若是该文件已存在则将其覆盖。若是该文件不存在,建立新文件。 |
a | 打开一个文件用于追加。若是该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容以后。若是该文件不存在,建立新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。若是该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容以后。若是该文件不存在,建立新文件进行写入。 |
a+ | 打开一个文件用于读写。若是该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。若是该文件不存在,建立新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。若是该文件已存在,文件指针将会放在文件的结尾。若是该文件不存在,建立新文件用于读写。 |
file 为一对象,它有一些内置属性,以下orm
文件对象属性 | 描 述 |
---|---|
file.closed | 表示文件已经被关闭,不然为False |
file.mode | Access文件打开时使用的访问模式 |
file.encoding | 文件所使用的编码 |
file.name | 文件名 |
file.newlines | 未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含全部当前所遇到的行结束的列表 |
file.softspace | 为0表示在输出一数据后,要加上一个空格符,1表示不加。这个属性通常程序员用不着,由程序内部使用 |
以前的例子已经接触到了 read() 函数,该函数会会一次性读取文件的所有内容,若是能确保文件的大小,天然能够。但若文件过大,内存就爆了,因此,能够反复调用read(size)方法,每次最多读取size个字节的内容;也可调用 readline() 每次读取一行内容;而调用readlines()能够一次读取全部内容并按行返回list。总之,根据需求来。仅以 txt 文件为例,其余的文件读取须要特殊处理;另外,文件的格式编码方式也须要注意;这边仅介绍读取方法,其余的会出专题来学习。对象
在D:\python_file 下新建 poet.txt;示例以下,因为一个中文会占多个字节,故read(size) 部分会乱码,如:
写文件和读文件是同样的,惟一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件;'a' 对应的表示追加等。
以下示例,因为 write.txt 文件不存在,建立该文件并写入:
在上例基础上,继续,该文件被重写:
继续,此次使用追加,会在文件结尾追加: