一:文件
文件I/O常用操作:
open:打开或者要创建的文件名,如果不指定路径,默认是当前路径!
mode模式:
r:缺省的,表示只读打开
w:只写打开,默认覆盖原文件
x:创建并写入一个新文件,如果文件已经存在抛出异常
a:写入打开,如果文件存在,则追加
b:二进制模式
t:缺省的,文本模式
+:读写打开一个文件,给原来只读、只写方式打开提供缺省的读或写能力。read:读取
read(size):size表示读取多个字符或字节;负数或者None表示读取到EOF
write:写入
write(s):把字符串写入到文件中并返回字符的个数
writelines(lines):将字符串列表写入文件close:关闭
1,flush并关闭文件对象
2,文件已经关闭,再次关闭没有任何效果readline:读取行
readline(size):一行一行读取文件内容,size设置一次能读取行内几个字符或字节
readlines:多行读取
readlines(hint):读取所有行的列表,指定hint则返回指定的行数
seek:文件指针操作
tell:指针位置
errors:None和strict表示有编码错误将抛出ValueError异常;ignore表示忽略
newline:文本模式中,换行的转换。可以为None、”、’\r’、’\n’、’\r\n’
读时:None表示’\r’,’\n’,’\r\n’都被转换为’\n’;表示不会自动转换通用换行符;其他合法字符表示换行就是指定字符,就会按照指定字符分行
写时:None表示’\n’都会被替换为系统缺省行分隔符os.linesep;’\n’或”表示不替换;其他合法字符表示’\n’会被替换为指定的字符
closed:关闭文件描述符
True:表示关闭
False:会在文件关闭后保持这个描述符seekable():是否可seek
readable():是否可读
writable():是否可写
closed:是否已经关闭
打开操作:打开一个文件,返回一个文件对象(流对象)和文件描述符。打开文件失败,则返回异常。
格式:
open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)文件模式:不同模式下,操作函数不相同,表现的结果也不一样。 文本模式: 文本模式支持从开头向后偏移的方式: 1,whence为1表示从当前位置开始偏移,但是只支持偏移0,相当于原地不动 2,whence为2表示从EOF开始,只支持偏移0,相当于移动文件指针到EOF 3,seek是按字节偏移的 二进制模式: 1,whence为0时,表示从头开始,offset只能是正整数 2,whence为1时,表示当前位置,offset可正可负 3,whence为2时,表示从EOF开始,offset可正可负
文件指针:指向当前(字节)位置!!!
- tell():显示指针当前位置
- seek(cookie, whence=0):移动指针位置。
cookie偏移量
whence:从哪里开始:
- 0:缺省,表示从头开始,offset只能是正整数
- 1:表示从当前位置,offset只接受0
- 2:表示从EOF开始,offset只接受0
BUFFERING:缓冲区
- -1:表示使用缺省大小的buffer,如果是二进制模式,使用io.DEFAULT_BUFFER_SIZE,默认是4096或者是8192。
- 0:只在二进制模式使用,表示关闭buffer
- 1:只在文本模式使用,表示使用行缓冲,意思是见到换行符就flush
- >1:大于1用于指定buffer的大小
buffer缓冲区:
- 缓冲区指一个内存空间,一般来说是一个FIFO队列,到缓冲区满或者达到阈值,数据才会flush到磁盘!
- flush():将缓存区数据写入磁盘
- close():关闭前会调用flush()
重点:
- 文本模式,一般都用默认缓冲区大小
- 二进制模式,是一个个字节的操作,可以指定buffer的大小
- 一般来说,默认缓冲区大小是个比较好的选择,除非明确知道,否则不调整它
- 一般编程中,明确知道需要写磁盘,都会手动调用依次flush,而不是等到自动flush或者close的时候!
二,文件I/O上下文管理
上下文管理:一种特殊的语法,交给解释器去释放文件对象
格式:
- 使用with… as 关键字
- 上下文管理的语句块并不会开启新的作用域
- with语句块执行完的时候,会自动关闭文件对象
代码:
def copys(src:str, dst:str):
with open(src) as srcfile:
with open(dst, 'w') as dstfile:
dstfile.write(srcfile.rea