Python文件夹案例如何创建删除

wen python案例 30

本文目录导读:

Python文件夹案例如何创建删除

  1. 创建文件夹
  2. 删除文件夹
  3. 完整示例:创建和删除操作
  4. 注意事项

我来详细介绍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中创建和删除文件夹的常用方法,记得在实际使用时根据需求选择合适的函数,并做好异常处理。

抱歉,评论功能暂时关闭!