文件操作
文件IO常用操作
open 打开操作
read 读取操作
write 写入操作
close 关闭操作
readline 行读取操作
readlines 多行读取操作
seek 文件指针操作
tell 指针位置
文件访问有两种模式,文本模式和二进制模式,不同模式下,操作函数不尽相同,表现的结果也不一样。文件操作做常用的就是读和写。
文件打开操作:
open (file ,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None) 作用:打开一个文件,返回一个文件对象流和文件描述符
file 打开或者要创建的文件名,如果不指定路径,默认是当前路径
mode模式:
r 缺省的,表示只读打开 ,如果使用write方法,会抛出异常,如果文件不存在,抛出FileNotFountError异常
w 只写打开,如果读取则抛出异常,如果文件不存在,则直接创建文件,如果文件存在,则清空文件内容
x 创建并写入一个新文件,文件不存在,创建文件,并只写方式打开,如果文件存在,则抛出FileExistsError异常
a 写入打开,如果文件存在,则追加
b 二进制模式
t 缺省的,文本模式
+ 读写打开一个文件。给原来只读,只写方式提过缺省的读或着写能力
文件指针
文件指针,指向当前字节位置
mode = r ,指针起始在0 mode =a ,指针起始在EOF
tell()显示指针当前位置
seek(offset[,whence])移动文件指针位置,offest偏移多少字节,whence从哪里开始。
文本模式下whence 0 缺省值,表示从头开始,offest只能正整数 。whence 1 表示从当前位置,offest只接受0 ,whence 2表示从EOF开始,offest只接受0
二进制模式下whence 0 缺省值,表示从头开始,offest只能正整数。 whence 1 表示从当前位置,offest可正可负 ,whence 2表示从EOF开始,offest可正可负
buffering 说明
buffering = -1 t和b,都是io.DEFAULT_BUFFER_SIZE
buffering = 0 b关闭缓冲区 t不支持
buffering = 1 b就一个字节 t行缓冲,遇到黄行符才flush
buffering > 1 b模式表示缓冲区大大小。缓存区的可以超过io.DEFAULT_BUFFER_SIZE,直到设定的值超出后才吧缓冲区flush
t模式,是io.DEFAULT_BUFFER_SIZE字节,flush完后把当前字符串也写入磁盘
encoding:编码,仅在文本模式使用 None表示使用缺省编码,依赖操作系统
errors 什么样的编码错误将被捕获None和strict表示有编码错误将抛出ValueError异常,ignore表示忽略
newline 文本模式中,换行转换,可以为None、‘空串’,‘\n’,'\r\n','\r'
closefd 关闭文件描述符,Ture表示关闭他,False会在文件关闭后保持这个描述符。
文件的读、写、关闭操作
read(size=-1) size表示读取的字符或者字节。负数或者None表示读到EOF
readline(size=-1) 一行行的读取
readlines(dize=-1) 读取指定的行数
write(s) 把字符串S写入到文件中并返回字符的个数
writelines(s) 价格字符串列表写入文件。
close
flush 关闭文件对象,再次关闭没有任何效果
文件的上下文管理
上下文管理:
语法:
1:使用with....as关键字
2:上下文管理的语句块并不会开启新的作用域
3:with语句块执行完的时候,会自动关闭文件对象
with语句的写法:
with open(路径名) as f:
f.write(‘字符串’)
file = pen(路径名)
with file:
f.write(‘字符串’)
文件的路径操作之pathlib模块
导入pathlib模块
初始化:
P = Path
目录操作
路径的拼接和分解
操作符/
P /字符串 或者 字符串/P
分解
parts属性可以返回路径中的每一部分
joinpath
join path(*other)连接多个字符串到Path对象中
获取路径
str 获取路径字符串
bytes 获取路径字符串bytes
父目录
parent目录的逻辑父目录
parents 父目录序列,索引0是直接的父
目录组成部分
name 目录的最后一个部分
suffix 目录中最后一个部分的扩展名
stem 目录最后一个部分,没有后缀
suffixes 返回多个扩展名列表
with_suffixes(suffix) 有扩展名则替换,无则补充扩展名
with_name(name)替换目录最后一个部分并返回一个新的路径
全局方法
cwd() 返回当前工作目录
home() 返回当前家目录
方法
is_dir() 是否是目录,存在返回True
is_file() 是否是普通文件,文件存在返回Ture
is_symlink() 是否是软连接
is_socket 是否是socket
is_block_device() 是否是块设备
is_char_device() 是否是字符设备
id_absolute() 是否是绝对路径
resolve() 返回一个新的路径
absolute() 获取绝对路径
exists() 目录或者文件是否存在
rmdir() 删除空目录,没有提供判断目录为空的方法
touch(mode=0o666,exist_ok=Ture) 创建一个文件
as_uri()将路径返回成URL,例如‘file:///etc/passwd’
mkdir(mode=0O777,parents=False,exist_ok=False)
parents,是否创建符目录,True等同于mkdir-p;Flase时,父目录不存在,则抛出FileNotFoundError
exist_ok参数,在3.5版本加入。False时,路径存在,抛出FileExistsError;Ture时,FileExitsError被忽略
itemdir() 迭代当前目录
通配符:
glob(pattern)通配给定的模式
rglob(pattern)通配给定的模式,递归目录
都返回一个生成器
配置
match(pattern)
模式匹配,成功返回Ture
stat()相当于stat命令
lstat同stat(),但如果时符号链接,则显示符号链接本身的文件信息