zoukankan      html  css  js  c++  java
  • python1022-1025,路径操作

    3.4以前的版本:
    使用 os.path模块
    from os import path
    创建一个路径对象
    p = path.join('/etc','sysconfig','network')
    使用pash.split(p) 来切出大多数文件路径末尾的文件
    将文件路径字符串化,使用 path.dirname(字符串路径赋值的变量 )就可以轻松的取出他的文件路径
    将文件路径字符串化,使用 path.basename(字符串路径赋值的变量 )就可以轻松的取出他的基名
    将文件路径字符串化,使用 path.splitdrive(字符串路径赋值的变量)就可以轻松的取出它所在的磁盘
     
    3.4以后版本使用
    pathlib模块,提供path对象来操作,包括目录和文件
    from pathlib import Path               #P为大写
     
    目录操作
    初始化目录
    p=Path( )     #当前目录
    p=Path('a','b','c/d')     #当前目录下的a/b/c/d
    p=Path('/etc')      #根下的etc目录
    路径的拼接和分解
    操作符:
    Path对象/Path对象
    Path对象/字符串  or  字符串/Path对象
    分解parts属性,返回路径中的每一个部分
    joinpath(*other) 连接多个字符串到Path对象中
     
    获取路径
    p=Path('/etc')
    str 获取路径字符串,bytes获取路径字符串的bytes
    p = Path(str(p),bytes(p))
     
    父目录:
    parent目录的逻辑父目录
    parents父目录序列,索引是直接的父目录
     
    常用的一些路径操作命令
    print(p.xxxx)
              name目的最后一个部分
              suffix 目录中最后一个部分的扩展名
              stem目录的最后一个部分,没有后缀
              suffixes 返回多个扩展名列表 
              with_suffix(suffix)补充扩展名到路径尾部,返回新的路径,扩展名若存在则无效
              with_name(name) 替换目录最后一个部分并返回一个新的路径
     
    p =path( )
    p.  xxx     对一个文件目录进行判断,这个目录必须 实实在在的存在才能判断否则是False
     
         cwd( ) 返回当前工作目录
         home( )返回当前家目录
         is_dir()是否是目录
         is_file( )是否是普通文件
         is_sysmlink( ) 是否是软连接
         is_sockert( )是否是socket文件
         is_block_device( ) 是否是块设备
         is_char_device( )是否是字符设备
         is_absolute( )是否是绝对路径
         resolve( )返回一个路径,这个新路径就是当前Path对象的绝对路径,软链接会被解析
         absolute( )也可以获取绝对路径,但是推荐使用resolve( )
         exists( )目录或文件是否存在
         rmdir( )删除空目录,没有提供判断目录为空的方法
         as_uri( )将路径返回成URI,例如'file://etc/passwd'
         touch(mode=0o666,exit_ok=True)创建一个文件
         mkdir(mode=0o777,parents=False,extist_ok=False)
         parents,是否创建父目录,True创建,False不存在则报错,跟上exit_ok=bool参数,False:父目录路径存在报错,True:忽略这个错误,并不会提示
     
         iterdir( )      迭代当前目录
     
    使用glob去一个文件对象里匹配指定的文件
    glob(匹配对象) 通配给定的模式
    rglob(匹配对象)通配给定的模式,递归目录等同于 (**/*.py)
    可以搭配文件路径使用
    举例:
    Path( ' . ' ).glob (*.py )
    在当前工作目录下查找后缀为.py的文件对象
    Path( ' . ' ).glob (*/*.py )
    在当前工作目录下查找后缀为.py的文件对象且至少有一级目录
     
     
    匹配
    match(pattern)
    模式匹配,成功返回True
    Path('a/b.py').match('b/*.py')     #True
    Path('a/b/c.py').match('a/*.py')     #False
    Path('a/b/c.py').match('a/*/*.py')     #True
    Path('a/b/c.py').match('a/**/*.py')     #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(data,encoding=None,errors=None)
    以wt方式写入字符串到路径对应文件
     
  • 相关阅读:
    说一说Java的Unsafe类
    阿里云CentOS下安装jdk
    LeetCode 5
    五种方法实现Java的Singleton单例模式
    聊聊Java的final关键字
    LeetCode 4
    Java9都快发布了,Java8的十大新特性你了解多少呢?
    【Spring】mvc:annotation-driven 使用
    【gradle】【maven】gradle 转 maven pom.xml
    [GIT]比较不同分支的差异
  • 原文地址:https://www.cnblogs.com/spidermansam/p/7756082.html
Copyright © 2011-2022 走看看