Pytho open() 函数
python 内置的 open() 函数用于打开一个文件,创建一个 file 对象
更多文件 I/O 的方法可以访问我们的 Python 文件 I/O
语法
open(name[, mode[, buffering]])
参数
参数 | 说明 |
---|---|
name | 一个包含了你要访问的文件名称的字符串值 |
mode | mode 决定了打开文件的模式:只读,写入,追加等 所有可取值见如下的完全列表 这个参数是非强制的,默认文件访问模式为只读 (r) |
buffering | 如果 buffering 的值被设为 0,就不会有缓冲 如果 buffering 的值取 1,访问文件时会缓冲 如果将 buffering 的值设为大于 1 的整数,就是缓冲区的大小 如果取负值,缓冲区的大小则为系统默认 |
文件打开模式
下表列出了打开文件的不同模式 ( mode 参数 )
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写 |
file 对象方法
方法 | 说明 |
---|---|
file.read([size]) | size 未指定则返回整个文件 如果 size > 2 倍内存则有问题 f.read()读到文件尾时返回""(空字串) |
file.readline() | 返回一行 |
file.readline([size]) | 返回包含 size 行的列表,size 未指定则返回全部行 |
for line in f: print (line) | 通过迭代器访问 |
f.write("hello\n") | 如果要写入字符串以外的数据,先将它转换为字符串 |
f.tell() | 返回一个整数,表示当前文件指针的位置 |
f.seek(offset,[start]) | 用来移动文件指针 offset:单位:比特,可正可负 start: 0-文件头,默认值; 1 -当前位置; 2- 文件尾 |
f.close() | 关闭文件 |
范例
假设当前脚本目录下存在文件 site.txt
,内容如下
简单教程 简单编程
那么运行下面的代码将输出
>>>f = open('site.txt') >>> print (f.read()) 简单教程 简单编程 >>> f.seek(0) >>> f.read() '\xe7\xae\x80\xe5\x8d\x95\xe6\x95\x99\xe7\xa8\x8b\n\xe7\xae\x80\xe5\x8d\x95\xe7\xbc\x96\xe7\xa8\x8b\n'