pathlib管理路径和文件夹

[x for x in p.iterdir() if x.is_dir()]:生成路径对象p指向的文件夹下所有的子目录形成的列表。拆开的解释如下:for x in p.iterdir()for循环内x遍历p指向的文件夹;if x.is_dir(),筛选出文件夹;[x for……]:,筛选出来的结果放进列表。如果想打印出当前目录下所有子目录的名字:

p = Path(‘.’)

for f in [x for x in p.iterdir() if x.is_dir()]:

    print(f.name)

[x for x in p.iterdir() if x.is_file()]:生成路径对象p指向的目录下所有文件对象的列表。

列出当前目录树(当前目录以及子目录以及子目录的子目录……)下的所有文件:

for f in p.glob('**/*.*'):

    print(f.name)

# p.glob('**/*.*')的'**/*.*'不能替换成'*/*.*',p.glob('*/*.*')不会检索p指向的文件夹下的文件。

列出当前目录树(当前目录以及子目录以及子目录的子目录……)下的所有.py文件:

for f in p.glob('**/*.py'):

    print(f.name)

列出当前目录(不包括子目录)下的所有.py文件

for f in p.glob('*.py'):

    print(f.name)

遍历指定目录currentFolder下所有以viva_la_vida为文件名但扩展名不同的文件,viva_la_vida.jpgviva_la_vida.mp3viva_la_vida.txt都符合条件。从中找出扩展名是mp3的那个,输出文件名和文件大小。找到扩展名为txt的,输出文件内容:

currentFolder = Path(‘/Users/PythonABC/Documents/myCollection/’)

for f in currentFolder.glob('viva_la_vida.*'):

# 找出currentFolder文件夹下所有文件名是viva_la_vida扩展名随意的文件。

    if f.suffix == '.mp3':              # 扩展名是mp3的文件满足条件。

        print(f.name, f.stat().st_size)          

        # 打印文件尺寸。f.stat()返回路径对象f的信息,st_size是文件尺寸。

    elif f.suffix == ‘.txt’:            # txt文本文件满足条件。

        print(f.read_text(encoding=’utf-8’))

        # f.read_text()返回f指向的文本文件的内容子串,encoding=支持输出中文内容。