返回

Python 目录树遍历指南:从基础到高级

python

Python 中的目录树遍历指南

遍历目录树是 Python 中一项常见的任务,用于管理项目、搜索文件和执行其他文件系统相关的操作。本文将探讨使用 Python 中的 ospathlib 模块遍历目录树的各种方法,并提供清晰的代码示例。

使用 os 模块

os 模块提供了一个名为 os.walk() 的函数,用于递归遍历目录树。它返回一个包含当前目录、子目录和文件列表的元组。

import os

for root, directories, files in os.walk(directory):
    # 遍历根目录、子目录和文件

使用 pathlib 模块

pathlib 模块提供了面向对象的界面来操作文件系统。它有一个名为 Path.glob() 的方法,用于使用通配符匹配文件和目录:

from pathlib import Path

path = Path(directory)
for file in path.glob('**/*'):
    # 遍历所有文件(包括子目录中的文件)

遍历特定目录层级

有时,你需要遍历目录树的特定层级。可以使用以下方法:

  • os.listdir():列出当前目录中的文件和子目录。
  • os.scandir():返回一个迭代器,可以逐个访问目录中的条目。

代码示例

以下是一个使用 os.walk() 函数遍历目录树并打印文件和子目录列表的 Python 代码示例:

import os

def print_directory_tree(directory):
    for root, directories, files in os.walk(directory):
        print(f"Current directory: {root}")
        print("Subdirectories:")
        for d in directories:
            print(f" - {d}")
        print("Files:")
        for f in files:
            print(f" - {f}")

directory = input("Enter the directory to list: ")
print_directory_tree(directory)

常见问题解答

问:如何递归遍历目录树?
答:使用 os.walk() 函数时,将 topdown 参数设置为 True

问:如何获取特定目录中的所有文件?
答:使用 pathlib.Path.iterdir() 方法遍历目录并获取文件。

问:如何获取目录中的所有子目录?
答:使用 pathlib.Path.iterdir() 方法遍历目录并获取目录。

问:如何获取文件的大小?
答:使用 os.path.getsize(file) 获取文件的大小(以字节为单位)。

问:如何获取文件的最后修改时间?
答:使用 os.path.getmtime(file) 获取文件的最后修改时间(以 Unix 时间戳表示)。

结论

遍历目录树是 Python 中一项基本的且有用的任务,用于管理项目、搜索文件和执行其他文件系统相关的操作。通过使用 ospathlib 模块,你可以轻松有效地遍历目录树的各个层级。本指南提供了详细的说明和代码示例,帮助你充分利用这些方法,以满足你的具体需求。