• chapter6.2、stringIO 、 bytesIO和路径操作


    一、stringIO 和 bytesIO

    stringIO 

    类文件对象,在内存中开辟一个文本模式的buffer,可以像文件一样操作

    临时缓冲,不写入磁盘,close时关闭消失

    tio.getvalue()  读取内容,不受指针影响,其他与文件操作相同

    文件系统中没有相应的文件对象,没有fileno()

    bytesIO

    from io import BytesIO

    与string的操作相同,在内存中开辟一个二进制模式的buffer,可以像文件对象一样操作

    内存中的流,字符流和字节流,接口相同

    可以使用with,文件对象和类文件对象你都支持上下文管理

    磁盘操作慢于内存操作,内存足够时,优化思路是少落地,减少磁盘IO的过程,可以大大提高程序运

    行效率

    磁盘的缓存也可以使用,但不稳定,写入最好批量操作

    file-like对象 ,类文件对象,操作接口统一

    from sys impoort stdout ,stderr ,stdin

    标准错误输出,在标准错误输出上输出颜色改变的字符串

    标准输入,标准输出和标准错误输出都是类文件对象

    二、路径操作

    文件系统就是路径加文件本身

    linux文件系统就是一颗目录树,一切皆文件,目录也是文件

    Windows文件系统是分盘符的,

    os.path 3.4之前使用os模块下的path方法

      windows 的路径分割符默认是\ 盘符是O:/, linux下默认是 /,最左边的 / 都是根

      操作的类型是字符串,Linux下path.exists(), 来判断文件是否存在

      abspath

      dirname,文件目录,当前文件可以是目录

      basename

      path.spllitdrive

      from os import path

    3.4以后使用

    pathlib,提供path对象来操作,包括目录和文件

    from pathlib import Path

    path()      Winfows下===》WindowsPath('.'),Linux下PosixPath('.')

    p.absolute()  绝对路径.

    p / 'c' 此处 / 为运算符重载,结合为一个路径,字符串相除报语法错误,'a'/'b',可以用括号包装起来

    p.parts 分解成元组,拆分路径,返回路径中的每个部分

    joinpath 连接多个字符串到path对象中

    str(p)获取路径字符串   bytes(p)获取路径字符串的bytes

    路径中的注意转义

    p.parent 父路经,目录的逻辑父目录

    p.parents 祖先路径,可迭代对象,可以获得所有的父路径,索引0是直接的父

    目录组成部分

    p2.name 指basename ,

    p2.stem 不带类型的最后一个文件名,

    p2.suffix 最后一个文件的后缀,

    p2.suffixes多级扩展名列表

    p2.with_name,名称替换 ,替换路径基名,并返回一个新的路径

    p2.with_suffix() 替换扩展名,有则替换,无则补充扩展名。

    p.cwd() 类上的对象可以直接调用类的某些操作方法,返回当前工作目录

    p.home()返回家目录

    判断方法

    p.is_dir() 不存在判断都是False,存在返回True

    p.is_file() 判断是否普通文件,存在返回True

    p.is_symlink()  是否软链接

    p.is_socket() 文件

    p.is_block_device() 是否块设备

    p.is_absolute()  是否直接路径,软连接,不解析

    p.resolve()  返回新路径,就是当前path对象的绝对路径,如果是软连接,解析它

    p.absolute()   获取绝对路径

    p.exists()   目录或文件是否存在

    rmdir() 删除空目录,有文件,不删,慎用删除

    touch(mode=0o666,exist_ok=True) : 

      path('O:/test').touch()      

      touch的·参数exist_ok ,是否覆盖,存在也覆盖,会压制异常;touch改变文件atime

    p.as_uri()  将路径返回成URI,例如"file:///etc/passwd"

    p.mkdir(mode=0o777,parents=False,exist_ok=False),

      parents,是否创建父目录:True等同于mkdir -p ,False时,父目录不存在抛异常FileNotFoundError

      exist_ok 参数,Fasle时,路径存在,抛FileExistsError,True时,压制异常,忽略

    迭代

    iterdir,迭代目录,遍历目录所有内容,不递归,显示隐藏文件

    通配符

    glob(pattern) 通配给定的模式

    rglob(pattern) 通配给定的模式,递归寻找

    都返回 生成器对象

    glob('*/*log')   */下一层,; *.log *通配;**/下任意层寻找,相当于rglob

    match(pattern)模式匹配成功返回True

    stat()    相当于stat ,文件状态信息,跟踪软连接到文件本身

    lstat 对符号链接只看连接文件本身的文件信息

    文件操作

    路径打开

    Path.open(self, mode='r', buffering=-1, encoding=None, errors=None, newline=None)

    方法与内建函数open类似,返回一个文件对象

    p.write源代码中使用with,调用不用关文件

    Path.read_text(encoding=None,errors=None)

    Path.read_bytes  :rb读取路径对应文件,

    from pathlib import Path
    p = Path('./test_binary.txt')
    p.write_bytes(b'asd')
    p.read_bytes()
    p = Path('./test_test.txt')
    p.write_text('absd')
    p.read_text()
  • 相关阅读:
    redis的发布订阅模式pubsub
    django集成celery之callback方式link_error和on_failure
    linux命令和awk
    使用beanstalkd实现定制化持续集成过程中pipeline
    JavaScript实现模糊推荐的input框(类似百度搜索框)
    hadoop streaming编程小demo(python版)
    一个scrapy框架的爬虫(爬取京东图书)
    mongodb生产环境(副本集模式)集群搭建配置
    TensorFlow加载图片的方法
    STC15W408AS简单使用教程-简单的光强检测!
  • 原文地址:https://www.cnblogs.com/rprp789/p/9581709.html
Copyright © 2020-2023  润新知