路径操作&StringIO/BytesIO
路径操作
- 路径操作模块:
- 3.4版本以前os.path模块
- 3.4版本开始,建议使用pathlib模块,提供Path对象来操作。包括目录和文件
- pathlib模块:
- 路径拼接和分解
- 操作符/
- Path对象/Path对象
- Path对象/字符串或者字符串/Path对象?
- 分解:
- parts属性,可以返回路径中的每一个部分
- joinpath:
- joinpath(*other)连接多个字符串到Path对象中
- 获取路径
- str获取路径字符串
- bytes获取路径字符串的bytes
- 父目录
- parent目录的逻辑父目录
- parents父目录序列,索引0是直接父目录
- name目录的最后一个部分
- suffix目录中最后一个部分的扩展名
- stem目录最后一个部分,没有后缀
- suffixes返回多个扩展名列表
- with_suffix(suffix)补充扩展名到路径尾部,返回新的路径,扩展名存在则无效
- with_name(name)替换目录后最后一个部分并返回一个新的路径
- cwd()返回当前工作目录
- home()返回当前家目录
- is_dir()是否是目录
- is_file()是否是普通文件
- is_symlink()是否是软连接
- is_socket()是否是socket文件
- is_block_device()是否是块设备
- is_char_device()是否是字符设备
- is_absolute()是否是绝对路径
- resolve()返回一个新路径,这个新路径就是当前Path对象的绝对路径,如果软链接直接被解析
- absolute()也可以获取绝对路径,但是推荐使用resolve()
- exists()目录或文件是否存在
- rmdir()删除空目录,没有提供判断目录为空的方法
- touch(mode=0o666,exist_ok=Ture)创建一个文件
- as_uri()将路径返回成URI,例如‘file:///etc/passwd’
- mkdir(mode=0o777,parents=False,exist_ok=False)#parents是否创建父目录,True等同于mkdir -p;父目录不存在,则抛出FileNotFoundError。exist_ok在3.5加入,False时路径存在抛出FileExistsError;True时,FileExistsError被忽略
- iterdir()迭代当前目录
- glob(pattern)通配符给定模式
- rglob(pattern)通配符给定模式,递归目录
- match(pattern)匹配模式,成功返回True
- open(mode=’r’,buffering=-1,encoding=None,errors=None,newline=None)
- 使用方法类似于内建函数open。返回一个文件对象
- 3.5增加新函数:
- read_bytes():以rb读取路径对应文件,并返回二进制流,看源码
- read_text(encoding=None,errors=None):以rt方式读取路径对应文件,返回文本
- Path.write_bytes(data):以wb方式写入数据到路径对应文件
- write_text(date,encoding=None,errors=None):以wt方式写入字符串到路径对应文件
StringIO
- io模块中的类:from io import StringIO
- 内存中,开辟的一个文本模式buffer,可以像文件对象一样操作它
- 当close方法被调用的时候,这个buffer会被释放
- getvalue()获取全部去内容,跟文件指针没有关系
- 好处:一般来说,磁盘的操作比内存操作要慢的多,内存足够的时候一般的优化思路是少落地,减少磁盘IO的过程,可以大大提高程序的运行效率
- io模块中的类 from io import BytesIO
- 内存中,开辟的一个二进制模式的buffer,可以像文件对象一样操作它
- 当close方法被调用的时候,这个buffer会被释放。同上例
- file-like对象:类文件对象,可以像文件对象一样操作
- socket对象,输入输出对象(stdin、stdout)都是类文件对象
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88166