本文目录导读:

我来详细介绍Python中创建和删除文件夹的方法。
创建文件夹
使用 os.mkdir() - 创建单级目录
import os
# 创建单个文件夹
os.mkdir('new_folder')
print("文件夹创建成功")
# 如果文件夹已存在会报错,建议先检查
folder_path = 'my_folder'
if not os.path.exists(folder_path):
os.mkdir(folder_path)
print(f"文件夹 {folder_path} 创建成功")
else:
print(f"文件夹 {folder_path} 已存在")
使用 os.makedirs() - 创建多级目录
import os
# 创建多级目录,如果父目录不存在会自动创建
os.makedirs('parent/child/grandchild', exist_ok=True)
print("多级目录创建成功")
# exist_ok=True 表示如果目录已存在不会报错
os.makedirs('a/b/c', exist_ok=True)
使用 pathlib (Python 3.4+ 推荐)
from pathlib import Path
# 创建单个文件夹
Path('new_folder2').mkdir(exist_ok=True)
# 创建多级目录
Path('parent2/child2/grandchild2').mkdir(parents=True, exist_ok=True)
删除文件夹
使用 os.rmdir() - 删除空文件夹
import os
# 只能删除空文件夹
folder_path = 'empty_folder'
if os.path.exists(folder_path):
os.rmdir(folder_path)
print(f"空文件夹 {folder_path} 删除成功")
else:
print("文件夹不存在")
使用 shutil.rmtree() - 删除非空文件夹
import shutil
import os
# 删除整个文件夹及其所有内容
folder_path = 'my_folder'
if os.path.exists(folder_path):
shutil.rmtree(folder_path)
print(f"文件夹 {folder_path} 及其所有内容已删除")
else:
print("文件夹不存在")
完整示例:创建和删除操作
import os
import shutil
from pathlib import Path
class FolderManager:
def __init__(self, base_path='.'):
self.base_path = base_path
def create_folder(self, folder_name):
"""创建文件夹"""
folder_path = os.path.join(self.base_path, folder_name)
try:
# 使用os模块
if not os.path.exists(folder_path):
os.makedirs(folder_path)
print(f"文件夹 {folder_path} 创建成功")
return True
else:
print(f"文件夹 {folder_path} 已存在")
return False
except Exception as e:
print(f"创建文件夹失败: {e}")
return False
def create_nested_folders(self, folder_path):
"""创建嵌套文件夹"""
try:
os.makedirs(folder_path, exist_ok=True)
print(f"嵌套文件夹 {folder_path} 创建成功")
return True
except Exception as e:
print(f"创建嵌套文件夹失败: {e}")
return False
def delete_folder(self, folder_name):
"""删除文件夹"""
folder_path = os.path.join(self.base_path, folder_name)
try:
if os.path.exists(folder_path):
# 检查是否为文件夹
if os.path.isdir(folder_path):
# 检查是否为空
if not os.listdir(folder_path):
os.rmdir(folder_path)
print(f"空文件夹 {folder_path} 删除成功")
else:
# 非空文件夹使用shutil
shutil.rmtree(folder_path)
print(f"非空文件夹 {folder_path} 及其内容已删除")
return True
else:
print(f"文件夹 {folder_path} 不存在")
return False
except Exception as e:
print(f"删除文件夹失败: {e}")
return False
def safe_delete(self, folder_path, confirm=False):
"""安全删除(带确认)"""
if not os.path.exists(folder_path):
print("文件夹不存在")
return False
if confirm:
response = input(f"确认删除 {folder_path} 及其所有内容?(y/n): ")
if response.lower() != 'y':
print("删除已取消")
return False
try:
shutil.rmtree(folder_path)
print(f"{folder_path} 已安全删除")
return True
except Exception as e:
print(f"删除失败: {e}")
return False
def list_folders(self):
"""列出当前目录下的所有文件夹"""
folders = []
for item in os.listdir(self.base_path):
item_path = os.path.join(self.base_path, item)
if os.path.isdir(item_path):
folders.append(item)
return folders
# 使用示例
def main():
manager = FolderManager()
# 创建文件夹
print("=== 创建文件夹 ===")
manager.create_folder('test_folder')
manager.create_folder('test_folder') # 尝试创建已存在的文件夹
manager.create_nested_folders('a/b/c/d')
# 列出所有文件夹
print("\n=== 当前文件夹列表 ===")
folders = manager.list_folders()
for f in folders:
print(f" - {f}")
# 删除文件夹
print("\n=== 删除文件夹 ===")
manager.delete_folder('test_folder')
manager.delete_folder('a')
# 创建一些文件用于演示
print("\n=== 创建非空文件夹演示 ===")
os.makedirs('demo_folder', exist_ok=True)
with open('demo_folder/test.txt', 'w') as f:
f.write('这是一个测试文件')
# 安全删除(带确认)
# manager.safe_delete('demo_folder', confirm=True)
# 直接删除非空文件夹
manager.delete_folder('demo_folder')
print("\n=== 最终文件夹列表 ===")
folders = manager.list_folders()
for f in folders:
print(f" - {f}")
if __name__ == "__main__":
main()
注意事项
权限问题
import os
import stat
# 修改文件夹权限
folder_path = 'restricted_folder'
if os.path.exists(folder_path):
# 修改为完全权限
os.chmod(folder_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
# 然后尝试删除
os.rmdir(folder_path)
路径处理建议
import os
from pathlib import Path
# 推荐使用Path处理路径
base_dir = Path(__file__).parent # 脚本所在目录
new_folder = base_dir / 'data' / 'backup'
new_folder.mkdir(parents=True, exist_ok=True)
# 使用绝对路径避免混淆
abs_path = os.path.abspath('my_folder')
print(f"绝对路径: {abs_path}")
异常处理模板
import os
import shutil
def safe_delete_folder(folder_path):
"""安全的删除文件夹函数"""
try:
if os.path.exists(folder_path):
shutil.rmtree(folder_path)
print(f"{folder_path} 删除成功")
return True
else:
print(f"{folder_path} 不存在")
return False
except PermissionError:
print(f"没有权限删除 {folder_path}")
return False
except OSError as e:
print(f"删除失败: {e}")
return False
这些代码涵盖了Python中创建和删除文件夹的常用方法,记得在实际使用时根据需求选择合适的函数,并做好异常处理。