当前位置:首页> 行业快讯 >

Python 目录和文件操作 - pathlib 世界时讯

时间:2023-02-19 15:08:47    来源:哔哩哔哩

目录和文件操作 - pathlib

面向对象的目录、文件系统模块,可以取代os.path

导入Path类

from pathlib import Path

遍历子目录 - path.iterdir()

p = Path(r'E:\WAV Sound')for i in p.iterdir():    print(i)E:\WAV Sound\cymatics.fmE:\WAV Sound\Dannasko Anime Vocal SamplesE:\WAV Sound\Sounds of Himalayas Sample Pack Vol.1[Future Bass Edition]


(资料图)

使用通配符深度遍历 - path.glob(pattern), path.rglob(pattern)

count = 0 # 控制展示结果数量for i in p.glob('**/*.wav'):    if count >10: break    print(i)    count +=1E:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 1 - 90 BPM D Maj.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 2 - 155 BPM D# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 3 - 160 BPM A Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 4 - 165 BPM D# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 1 - 83 BPM C Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 10 - 170 BPM F# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 11 - 170 BPM F# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 12 - 170 BPM B Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 2 - 100 BPM G# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 3 - 126 BPM B Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 4 - 128 BPM C Min.wav

** 表示递归匹配,python3.9之后可以用 rglob(\'*.wav\') 代替 glob(\'**/*.wav\'),效果相同

count = 0 # 控制展示结果数量for i in p.rglob('*.wav'):    if count >10: break    print(i)    count +=1E:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 1 - 90 BPM D Maj.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 2 - 155 BPM D# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 3 - 160 BPM A Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Classic Melody Loop 4 - 165 BPM D# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 1 - 83 BPM C Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 10 - 170 BPM F# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 11 - 170 BPM F# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 12 - 170 BPM B Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 2 - 100 BPM G# Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 3 - 126 BPM B Min.wavE:\WAV Sound\cymatics.fm\Cymatics - 2020 Melody Collection\Cymatics - 2020 Dark Melody Loop 4 - 128 BPM C Min.wav

判断路径属性:

p.exists() # 路径是否存在Truep.is_file() # 是否是文件Falsep.is_dir() # 是否是目录True

路径拼接:

file_path = p / 'test_file.txt'file_path.exists()False

创建文件:

file_path.touch() # 只要不报错,就是创建成功file_path.exists() and file_path.is_file()True

文件读写:

# 和python 内置函数 open()类似with file_path.open('w',encoding='utf-8') as f:    f.write('Hello!')# 写入字符串更简单的用法,文件会自动关闭file_path.write_text('Hello', encoding='utf-8')# 读取同理with file_path.open('r',encoding='utf-8') as f:    f.read()file_path.read_text(encoding='utf-8')# 二进制读写可用 write_bytes(data), read_bytes()'Hello'

文件重命名和删除:

用with_stem返回一个新路径,作为重命名的目标参数,也可以with_name(), with_suffix()

new_path = file_path.with_stem('test_file_1')new_path_2 = file_path.with_name('test_file_2.txt')new_json_path = file_path.with_suffix('.json')print(new_path, new_path.exists())print(new_path_2, new_path_2.exists())print(new_json_path, new_json_path.exists())E:\WAV Sound\test_file_1.txt FalseE:\WAV Sound\test_file_2.txt FalseE:\WAV Sound\test_file.json False

重命名为 new_path,并把返回的路径对象赋值给file_path

file_path = file_path.rename(new_path)print(new_path.exists())print(file_path, file_path.exists())TrueE:\WAV Sound\test_file_1.txt True

删除文件

file_path.unlink()

目录创建和删除:

创建多级目录时,要设置 mkdir 的 parent 参数为 True,比如 path.mkdir(parent=True)

test_folder = p / 'Test Folder'test_folder.mkdir()

删除,如果目录不为空会报错

test_folder.rmdir()

如果要删除多级目录,可以用 os.removedirs(path),python 3.6之后支持传入 Path对象

上一篇:

下一篇:

上海:5月22日起,地面公交和轨道交通有条件逐步恢复运营

  上海:5月22日起,地面公交和轨道交通有条件逐步恢复运营  5月16日上午10:00,上海举行新冠肺炎疫情防控工作新闻发布会,上海市副市

2022-05-16

上海:6月1日至中下旬全面恢复正常生产生活秩序

  上海下一步防控分为三个阶段,6月1日至中下旬全面恢复正常生产生活秩序  5月16日上午10:00,上海举行新冠肺炎疫情防控工作新闻发布会

2022-05-16

瞒着父母当志愿者 她在救援车上完成毕业答辩

  她在救援车上完成毕业答辩 青岛小嫚瞒着父母当志愿者支援上海抗疫  近日,青岛小嫚王若琦在援沪救援车上完成大学毕业答辩的故事,引

2022-05-16

上海奉贤将逐步有序恢复正常生产生活秩序

  中新网5月16日电 据“上海奉贤”微信公众号消息,16日,上海市奉贤区新冠肺炎疫情防控工作领导小组办公室发布《告奉贤市民书》表示,

2022-05-16

上海:已经有15区实现社会面清零 封控区总人数降到100万人以内

  今天(5月16日)上午举行的上海市疫情防控工作新闻发布会上,上海市副市长宗明表示,本轮疫情发生以来,上海市毫不动摇坚持动态清零总方

2022-05-16

西宁公安严厉打击涉疫违法犯罪 依法处理案件72起123人

  中新网西宁5月16日电(祁增蓓)“我们严厉打击涉疫违法犯罪,5月6日以来,及时依法处理殴打辱骂防疫人员、伪造通行证件、逃避封控管理、

2022-05-16

专家:发生狂犬病Ⅲ级暴露后 需尽早使用被动免疫制剂

  中新网广州5月16日电 (蔡敏婕 何宇航)“狂犬病暴露预防处置研讨会”15日在广州举行。广东省预防医学会首席专家张永慧称,接种狂犬病

2022-05-16

孩子居家上体育课,影响楼下居家办公,算侵权扰民吗?

  “请问楼上是在跳绳吗?一蹦一蹦的,还有抽地的声音。”“不好意思,孩子在上居家体育课,有几个动作力量控制不好,已经结束了。”“剧

2022-05-16

甘肃渭源:千年渭水文化蕴“写生热” 校地合作塑学生文化涵养

  中新网甘肃渭源5月16日电 (张婧)“渭水汤汤,源远流长。”甘肃省定西市渭源县作为黄河最大支流渭河的发源地,这里民风淳厚、民居自然

2022-05-16

5月16日起 西宁市部分区域有序开放

  中新网西宁5月16日电(祁增蓓)西宁市新冠肺炎疫情防控处置工作指挥部15日晚宣布,16日起,西宁部分区域实行有序开放。  据悉,5月16日

2022-05-16