python3 pathlib库Path类方法总结

1、调用库

from pathlib import Path

2、创建path对象

p = Path(file)

3、方法总结

p.cwd() # 获取当前路径
 
p.stat() # 获取当前文件的信息
 
p.exists() # 判断当前路径是否是文件或者文件夹
 
p.glob(filename) # 获取路径下的所有符合filename的文件,返回一个generator
 
p.rglob(filename) # 与上面类似,只不过是返回路径中所有子文件夹的符合filename的文件
 
p.is_dir() # 判断该路径是否是文件夹
 
p.is_file() # 判断该路径是否是文件
 
p.iterdir() #当path为文件夹时,通过yield产生path文件夹下的所有文件、文件夹路径的迭代器
 
P.mkdir(parents=Fasle) # 根据路径创建文件夹,parents=True时,会依次创建路径中间缺少的文件夹
p_news = p/'new_dirs/new_dir'
p_news.mkdir(parents=True)
 
P.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None) #类似于open()函数
 
p.rename(target) # 当target是string时,重命名文件或文件夹;当target是Path时,重命名并移动文件或文件夹
 
p.replace(target) # 重命名当前文件或文件夹,如果target所指示的文件或文件夹已存在,则覆盖原文件
 
p.parent(),p.parents() # parent获取path的上级路径,parents获取path的所有上级路径
 
p.is_absolute() # 判断path是否是绝对路径
 
p.match(pattern) # 判断path是否满足pattern
 
p.rmdir() # 当path为空文件夹的时候,删除该文件夹
 
p.name # 获取path文件名
 
p.suffix # 获取path文件后缀

代码留存必查

Date:2023030111:17
path lib Path 模块学习
"""
from pathlib import Path
import shutil


def bl(p):
    # 循环遍历当前目录的文件与文件夹  如果只遍历文件可以 *.* 这样如果没有后缀可能就漏掉了
    for s in p.glob("*"):
        # 如果是文件
        if s.is_file():
            # 获取文件的扩展名
            suffix = s.suffix
            # 三元运算符,如果有后缀 去点点+后缀格式做为文件夹,如果没有后后缀  那么以没有后缀为文件夹
            dir_path = s.suffix[1:] + "后缀格式" if suffix else bp / Path("没有后缀")
            # print("执行了", dir_path)
            # 文件夹路径设置进行拼接
            suffix_mk = bp / dir_path
            # 如果没有这个文件夹创建,如果有不创建
            suffix_mk.mkdir(exist_ok=True)
            # 移动文件到创建的文件夹,注意,如果后央的不+文件及后缀只是一个路径会报 rsplit错误  必须加上s.name
            shutil.move(s, suffix_mk / s.name)
        # 如果是文件夹就递归遍历
        elif s.is_dir():
            bl(s)
            # 如果是空文件夹删除,也就是文件夹移走了就是空的了,
            try:
                s.rmdir()
            except OSError as e:  # 防错 防报异常
                print(e)


# 可以不用递归 直接用r glob
def bl1():
    count = 0
    for s in bp.rglob("*"):  # r glob是包括了文件夹都进行遍历
        if s.is_file():
            count += 1
            name = bp / s.stem.split("-")[0]  # 只是测试
            name.mkdir(exist_ok=True)
            print(name)
            shutil.move(s, name / s.name)
    print(count)


# 其实这样可以把每个文件放在一个文件夹中  文件夹名字就是文件名的前5位
def bl2():
    for s in bp.rglob("*"):
        if s.is_file():
            name = bp / s.stem[:5]
            name.mkdir(exist_ok=True)
            print(name)
            shutil.move(s, name / s.name)


# 还可以引申出相同前缀的内容归到一个文件夹中
def bl3():
    path = Path("D:/Java/IT_hm/testDirectory - 副本/file")
    for s in path.rglob("*"):
        if s.is_file():
            filename = s.stem[:3]
            new_path = path.parent / Path("整理文件夹") / filename
            # parents为真,如果没有父目录也一并创建
            new_path.mkdir(parents=True, exist_ok=True)
            shutil.move(s, new_path / s.name)
    print("移动完成......")


if __name__ == '__main__':
    # 获取目录
    bp = Path("D:/系统目录/桌面/Python Exercises")

    # bl(bp)

    # bl1()

    # bl2()

    # bl3()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值