Python 目录操作
在Python编程中,操作文件系统目录是一项常见而重要的任务。无论是组织数据、管理文件,还是进行自动化操作,了解如何使用Python来操作目录都是必不可少的技能。本文将介绍Python中常用的目录操作函数和方法,帮助初学者掌握这一基本技能。
目录操作的基本模块
在Python中,主要通过以下模块来操作目录:
os
模块:提供了与操作系统交互的功能,包括目录和文件操作。os.path
模块:专门用于处理文件路径。shutil
模块:提供了更高级的文件和目录操作。pathlib
模块(Python 3.4+):提供了面向对象的文件系统路径处理方法。
让我们首先导入这些模块:
import os
import shutil
from pathlib import Path
获取当前工作目录
要获取当前的工作目录,我们可以使用os.getcwd()
函数:
current_dir = os.getcwd()
print(f"当前工作目录是: {current_dir}")
输出示例:
当前工作目录是: /Users/username/projects/python_tutorial
创建目录
使用os模块创建目录
使用os.mkdir()
可以创建一个新目录:
# 创建单个目录
try:
os.mkdir("new_folder")
print("目录创建成功!")
except FileExistsError:
print("目录已存在!")
如果需要创建多层次的目录结构,可以使用os.makedirs()
:
# 创建多层目录
try:
os.makedirs("parent_folder/child_folder/grandchild_folder")
print("多层目录创建成功!")
except FileExistsError:
print("目录已存在!")
使用pathlib模块创建目录
# 创建单个目录
p = Path("new_folder_pathlib")
p.mkdir(exist_ok=True)
print(f"目录 {p} 创建成功或已存在")
# 创建多层目录
p = Path("parent/child/grandchild")
p.mkdir(parents=True, exist_ok=True)
print(f"多层目录 {p} 创建成功或已存在")
提示
使用exist_ok=True
参数可以避免目录已存在时抛出异常,这是一个很实用的技巧。
列出目录内容
使用os模块列出目录内容
要列出目录中的所有文件和子目录,我们可以使用os.listdir()
:
# 列出当前目录的内容
files_and_dirs = os.listdir()
print("当前目录内容:")
for item in files_and_dirs:
print(f" - {item}")
# 列出指定目录的内容
specified_dir = "new_folder"
if os.path.exists(specified_dir):
files_and_dirs = os.listdir(specified_dir)
print(f"{specified_dir}目录内容:")
for item in files_and_dirs:
print(f" - {item}")
使用os.scandir()进行高级列表操作
Python 3.5引入了os.scandir()
,它提供了更多关于目录项的信息:
with os.scandir() as entries:
for entry in entries:
file_type = "文件" if entry.is_file() else "目录" if entry.is_dir() else "