python中的目录操作
Python 中处理目录(文件夹)的操作主要通过内置的 os
模块和 pathlib
模块来完成。这些模块提供了丰富的函数和类来创建、删除、遍历目录以及获取目录的详细信息。下面我将分别介绍这两个模块中用于目录操作的一些基本函数,并给出示例。
os 模块
os
模块是 Python 标准库的一部分,提供了许多与操作系统交互的功能,包括文件和目录操作。
os.listdir(path)
: 列出指定路径下的所有文件和目录名。os.mkdir(path)
: 创建一个新目录。os.makedirs(path, exist_ok=False)
: 递归地创建目录。如果exist_ok
为True
,则目录已存在时不会抛出异常。os.rmdir(path)
: 删除空目录。os.removedirs(path)
: 递归地删除空目录,直到遇到非空目录。os.path.join(path, *paths)
: 智能地拼接路径。os.getcwd()
: 获取当前工作目录。os.chdir(path)
: 改变当前工作目录。
示例:
import os
# 获取当前工作目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir)
# 列出当前目录下的所有文件和目录
files_and_dirs = os.listdir('.')
print("当前目录下的文件和目录:", files_and_dirs)
# 创建一个新目录
new_dir_path = os.path.join(current_dir, 'new_dir')
os.mkdir(new_dir_path)
# 递归地创建一个多级目录
multi_level_dir = os.path.join(new_dir_path, 'level1', 'level2')
os.makedirs(multi_level_dir, exist_ok=True)
# 改变当前工作目录
os.chdir(new_dir_path)
print("新的工作目录:", os.getcwd())
# 回到原来的工作目录
os.chdir(current_dir)
# 删除空目录
os.rmdir(new_dir_path) # 注意:这里假设new_dir_path是空的
# 递归地删除多级空目录(如果它们存在且为空)
# 注意:这通常不是必须的,因为 os.rmdir 只删除空目录
# os.removedirs(multi_level_dir)
pathlib 模块
pathlib
是 Python 3.4+ 中引入的一个面向对象的文件系统路径库。它提供了表示文件系统路径的 Path
类,使路径操作更加直观和易于理解。
Path.iterdir()
: 遍历目录中的文件和子目录。Path.mkdir(parents=False, exist_ok=False)
: 创建新目录。parents=True
时会创建所有不存在的父目录。Path.rmdir()
: 删除空目录。Path.rmtree()
: 递归地删除目录树。Path.joinpath(*other)
: 拼接路径。Path.cwd()
: 获取当前工作目录。Path.chdir(path)
: 改变当前工作目录。
示例:
from pathlib import Path
# 获取当前工作目录
current_dir = Path.cwd()
print("当前工作目录:", current_dir)
# 列出当前目录下的所有文件和目录
for item in current_dir.iterdir():
print(item)
# 创建一个新目录
new_dir = current_dir / 'new_dir'
new_dir.mkdir(parents=True, exist_ok=True)
# 递归地创建一个多级目录
multi_level_dir = new_dir / 'level1' / 'level2'
multi_level_dir.mkdir(parents=True, exist_ok=True)
# 改变当前工作目录(注意:Path 类本身没有 chdir 方法,这里仅作为示例说明)
# 实际上,可以使用 os.chdir(new_dir) 来改变工作目录
# 删除空目录
new_dir.rmdir() # 注意:这里假设 new_dir 是空的
# 递归地删除多级目录(如果它们存在)
# multi_level_dir.rmtree() # 注意:这将删除 multi_level_dir 及其所有子目录和文件
请注意,Path
类没有直接提供 chdir
方法来改变当前工作目录,但你可以使用 os.chdir()
并传递 Path