基本语法
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None,
closefd=True, opener=None)
file
表示文件的路径(绝对路径或者相对路径),也可以是要被封装的整数类型文件描述符。(如果是文件描述符,它会随着返回的 I/O 对象关闭而关闭,除非closefd
被设为False
。)
mode
是一个可选字符串,用于指定打开文件的模式,默认是r
,其他含义如下:
字符 | 意义 |
---|---|
‘r' | 读取(默认) |
'w' | 写入(先已空文件覆盖) |
'x' | 排他性创建,如果文件已存在则失效 |
'a' | 写入,如果文件存在则在末尾追加 |
'b' | 二进制模式(rb/wb/ab) |
't' | 文本模式(默认)(rt/wt/at) |
'+' | 更新(可读可写)(r+/w+/a+) |
buffering
是一个可选的整数,用于设置缓冲策略。(暂未使用过)
encoding
是用于解码或者编码的编码名称。只在文本模式下使用。虽然初始是None
,但实际上默认编码是依赖平台的。
errors
是一个可选字符串参数,用于指定如何处理编码和解码错误(不能在二进制模式下使用)(基本不使用)
newline
仅适用于文本模式,可以是 None,'','
','
' 和 '
'。作换行符作用。
closefd
是False
并且给出了文件描述符而不是文件名。那么当文件关闭时,底层文件描述符将保持打开状态。如果给出文件名则 closefd
必须为 True
(默认值),否则将引发错误。
opener
可以通过传递可调用的opener
来使用自定义开启器。
示例:
with open('test.txt', 'w', encoding='utf8') as f:
f.write('This will be written to test')
#使用with可以省略调用 f.close()
文件的内置方法
# seek(按字节位移)
with open('test.py', 'rb') as fr:
fr.seek(1) # 1表示位移1位,默认从文件头开始
fr.seek(1, 0) # 1表示偏移1位,0表示从头开始 # b'xad'
fr.seek(2, 1) # 1表示偏移1位,1表示从当前位置开始 # b'xad'
fr.seek(0, 2) # 0表示偏移0位,2表示文件末开始,把指针移到文件末
print(fr.read()) #
# tell(字节) 中 --> b'xe4xb8xad'
with open('test.py', 'r', encoding='utf8') as fr:
fr.seek(2, 0)
print(fr.tell())
# read(n)字符
with open('test.py', 'r', encoding='utf8') as fr:
print(fr.read(2)) # 读了6个字节
# truncate字节(截断)
with open('test.py', 'a', encoding='utf8') as fr:
fr.truncate(7) # 把2个字符后面的东西全清空