python pathlib 面向对象的文件系统路径

介绍

pathlib 面向对象的文件系统路径,比os.path更加强大

该模块提供了一些类,这些类使用适合不同操作系统的语义来表示文件系统路径。
路径类分为纯路径和具体路径:

  • 纯路径提供纯的计算操作,不提供I / O
  • 具体路径从纯路径继承,提供I / O操作。

python 3.4版的新功能,3.6版更加完善

官方网址:

https://malaoshi.top/python/pathlib.html

https://docs.python.org/zh-cn/3.6/library/pathlib.html

https://docs.python.org/3.6/library/pathlib.html

导入

from pathlib import Path

属性

name

返回文件名

parent

返回上级目录

方法

功能强大,不展示,参见官方网址

判断是否存在

from pathlib import Path

p = Path('test.txt')
print(p.exists()) # 存在打印True,否则打印False

例子

img_path = Path('/Users/mym/Desktop/数据集/VOCdevkit/VOC2007/JPEGImages/007751.jpg')

img_name=img_path.name
path=img_path.parent.parent

print(img_name)
print(path)

xml_path = Path(path,"Annotations",img_name[:-len(img_path.suffix)]+".xml")
print(xml_path)

执行结果:

007751.jpg
/Users/mym/Desktop/数据集/VOCdevkit/VOC2007/
/Users/mym/Desktop/数据集/VOCdevkit/VOC2007/Annotations/007751.xml

转成字符串

img_path = Path('/Users/mym/Desktop/数据集/VOCdevkit/VOC2007/JPEGImages/007751.jpg')
str(img_path)

文件改名例子

以 vim_ 开头的文件名,名字中的日期相同,那么改成 20220306上午.mp4

如:

文件名:

vim_20220306_382423.mp4
vim_20220306_382424.mp4
vim_20220306_382425.mp4

改名为:

vim_20220306_上午.mp4
vim_20220306_下午.mp4
vim_20220306_晚上.mp4

代码


from pathlib import Path

path='G:\\java大数据班10分钟视频\\备份2\\'

p = Path(path)

#[x for x in p.iterdir() if x.is_file()]
time_tag=1 # 时间标记,1:上午,2:下午,3:晚上
last_file_time=""

for x in p.iterdir():
    if x.is_file():
        # print(x)
        filename=x.name
        # print(filename[:4])
        if filename[:4] == "VID_":
            print(filename)
            one_pos=filename.find("_")
            tow_pos=filename.find("_",one_pos+1)

            current_file_time=filename[one_pos+1 :tow_pos]
            # 当前文件名与上一次文件名相同,time_tag 加1
            if current_file_time == last_file_time: 
                time_tag += 1
            else:
                time_tag = 1

            file_name_part2=""
            if time_tag==1:
                file_name_part2="上午"
            elif time_tag==2:
                file_name_part2="下午"

            elif time_tag==3:
                file_name_part2="晚上"

            last_file_time=current_file_time
            # print(last_file_time)
            new_file_name=current_file_time+file_name_part2+".mp4"
            print(new_file_name)
            x.rename(path+new_file_name)

原文出处:/show_1EF5c25QUnrn.html