Python File(文件)open 方法
python2中:
open(name[, mode[, buffering]])
打开文件,返回文件对象file部分中描述的类型的对象。如果文件无法打开, IOError则引发。
参数说明:
- name: 必需,要打开的文件路径(相对或者绝对路径)的文件名。
- mode: 可选,文件打开模式,默认为’r’
- buffering: 设置缓冲参数
常用的模式值:
- 'r’读取,
- 'w’写入(截断文件,如果它已经存在),即清除原来文件内容
- 'a’附加(在某些 Unix系统上,意味着所有写入都附加到文件的末尾,而不管当前的搜索位置)。
- 追加’b’,二进制方式
- 省略mode,则默认为’r’。默认设置是使用文本模式,该模式可以’\n’在写入时将字符转换
为特定于平台的表示,并在读取时返回。因此,当打开荷兰国际集团的二进制文件,你应该追加’b’到模式值开在二进制模式的文件,这将提高便携性。(追加’b’即使在不以不同方式处理二进制文件和文本文件的系统上,它也很有用,它可用作文档。)有关模式的更多可能值,请参见下文。 - 模式’r+’,'w+‘并’a+’ 打开文件进行更新(读写);
- 请注意’w+'截断文件。
- 在区分二进制文件和文本文件的系统上,附加’b’到以二进制模式打开文件的模式;
- 在没有这种区别的系统上,添加’b’没有效果。
缓冲参数
可选的缓冲参数指定文件所需的缓冲区大小:
- 0表示无缓冲,
- 1表示行缓冲,
- 任何其他正值表示使用(大约)该大小的缓冲区(以字节为单位)。
- 负缓冲意味着使用系统默认值,通常为tty设备进行行缓冲,并为其他文件进行完全缓冲。 如果省略,则使用系统默认值。
Python提供了很多文件处理模块,包括 fileinput,os,os.path,tempfile,和 shutil。
python3中:
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打开 文件并返回相应的文件对象。如果无法打开文件,OSError则会引发
参数说明:
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 是用于解码或编码文件的编码的名称,一般使用utf8
- errors: 报错级别,用于指定如何处理编码和解码错误
- newline: 区分换行符
- closefd: 传入的file参数类型,如果closefd是False并且给出了文件描述符而不是文件名,则在关闭文件时,底层文件描述符将保持打开状态。如果给出文件名,则closefd必须是True(默认值),否则将引发错误。
- opener:
常用的模式mode值:
‘r’ :打开文件读取(默认)
‘w’: 打开写入,先截断文件,即清除原来文件内容
‘x’: 打开以进行独占创建,如果文件已存在则失败
‘a’ :打开以进行写入,如果存在则附加到文件的末尾
‘b’: 二进制模式,加r或w前缀对于二进制读写访问
‘t’ :文字模式(默认)
‘+’: 打开磁盘文件进行更新(读写)
‘U’: 通用换行模式(已弃用)
缓冲参数
buffering是一个可选的整数,用于设置缓冲策略。
- 0以切换缓冲关闭(仅允许在二进制模式下),
- 1选择行缓冲(仅在文本模式下可用),
- 整数> 1以指示固定大小的块缓冲区的大小(以字节为单位)。
实例:
import os
dir_fd = os.open('somedir', os.O_RDONLY)
def opener(path, flags):
return os.open(path, flags, dir_fd=dir_fd)
with open('spamspam.txt', 'w', opener=opener) as f:
print('This will be written to somedir/spamspam.txt', file=f)
os.close(dir_fd) # don't leak a file descriptor