【13.2 python中的目录操作】

python中的目录操作


Python 中处理目录(文件夹)的操作主要通过内置的 os 模块和 pathlib 模块来完成。这些模块提供了丰富的函数和类来创建、删除、遍历目录以及获取目录的详细信息。下面我将分别介绍这两个模块中用于目录操作的一些基本函数,并给出示例。

os 模块

os 模块是 Python 标准库的一部分,提供了许多与操作系统交互的功能,包括文件和目录操作。

  • os.listdir(path): 列出指定路径下的所有文件和目录名。
  • os.mkdir(path): 创建一个新目录。
  • os.makedirs(path, exist_ok=False): 递归地创建目录。如果 exist_okTrue,则目录已存在时不会抛出异常。
  • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wang151038606

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值