Python os 和 pathlib 模块

____tz_zs笔记


os

文档: https://docs.python.org/3.6/library/os.html

os 模块提供了与系统、目录操作相关的功能,不受平台的限制


  • os.path.exists()     方法用于检验文件或文件夹是否存在
  • os.remove()     删除文件
  • os.makedirs()     创建多层目录
  • os.rmdir()     删除单级目录
  • os.rename()     重命名文件
  • os.path.isfile()     判断是否为文件
  • os.path.isdir()     判断是否为目录
  • os.path.join()     连接目录,如 path1 连接 path2 为 path1/path2
  • os.path.splitext()     将文件分割成文件名与扩展名,如分割 tmp.txt 为 tmp 和 .txt
  • os.path.basename()     返回文件的名称


pathlib

pathlib中的Path类可以创建path路径对象, 属于比os.path更高抽象级别的对象。

·

# -*- coding: utf-8 -*-
"""
@author: tz_zs
"""
import pathlib

# 用Path类可以创建path路径对象, 属于比os.path更高抽象级别的对象。
paths = pathlib.Path('D:/kaggle/stage1_train')
# Path.glob()过滤目录(返回生成器),注意此例中的文件夹结构
paths_glob = paths.glob('*/images/*.png')
for i in paths_glob:
    print(i)

'''
D:\kaggle\stage1_train\00071198d059ba7f5914a526d124d28e6d010c92466da21d4a04cd5413362552\images\00071198d059ba7f5914a526d124d28e6d010c92466da21d4a04cd5413362552.png
D:\kaggle\stage1_train\003cee89357d9fe13516167fd67b609a164651b21934585648c740d2c3d86dc1\images\003cee89357d9fe13516167fd67b609a164651b21934585648c740d2c3d86dc1.png
...
'''

·

Path.suffix    #文件后缀
Path.stem      #文件名不带后缀
Path.name      #带后缀的完整文件名

Path.parent    #路径的上级目录


基本用法:

Path.iterdir()  #遍历目录的子目录或者文件
Path.is_dir()  #判断是否是目录
Path.glob()  #过滤目录(返回生成器)
Path.resolve()  #返回绝对路径
/  # 拼接路径(目录中进行导航-官网说法)
Path.exists()  #判断路径是否存在
Path.open()  #打开文件(支持with)

Path.unlink()  #删除文件或目录(目录非空触发异常)


基本属性:

Path.parts  #分割路径 类似os.path.split(), 不过返回元组
Path.drive  #返回驱动器名称
Path.root  #返回路径的根目录
Path.anchor  #自动判断返回drive或root

Path.parents  #返回所有上级目录的列表


改变路径:

Path.with_name()  #更改路径名称, 更改最后一级路径名
Path.with_suffix()  #更改路径后缀
/  #拼接路径
Path.joinpath()  #拼接路径

Path.relative_to()  #计算相对路径


测试路径:

Path.match()  #测试路径是否符合pattern
Path.is_dir()  #是否是文件
Path.is_absolute()  #是否是绝对路径
Path.is_reserved()  #是否是预留路径

Path.exists()  #判断路径是否真实存在


其他方法:

Path.cwd()  #返回当前目录的路径对象
Path.home()  #返回当前用户的home路径对象
Path.stat()  #返回路径信息, 同os.stat()
Path.chmod()  #更改路径权限, 类似os.chmod()
Path.expanduser()  #展开~返回完整路径对象
Path.mkdir()  #创建目录
Path.rename()  #重命名路径
Path.rglob()  #递归遍历所有子目录的文件


目录树

from pathlib import Path
import sys

def lst_tree(p, n):
    if p.is_file():    #判断是否是文件
        print('|' + '\t|' * n + '-' * 4 +  p.name)
    elif p.is_dir():    # 判断是否是目录
        print('|' + '\t|' * n + '-' * 4 +  str(p.relative_to(p.parent)) + '\\')
        for pt in p.iterdir():
            lst_tree(pt, n + 1)   # 递归

if __name__ == "__main__":
        # 对命令行参数进行判断
    if len(sys.argv) != 1 and Path(sys.argv[1]).exists():
        lst_tree(Path(sys.argv[1]), 0)
    else:
        lst_tree(Path('.'), 0)
·


参考:

[pathlib]内置pathlib库的常用属性和方法

Python 标准库学习之 pathlib

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值