You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python实现两个目录下的全部内容互相交换

Python 实现两个目录内容互换的方法

以下是两种常用的可落地方案,可根据实际场景选择:

方案1:通过临时目录中转(代码最简洁、执行速度最快)

该方案本质是交换两个目录本身的路径指向,仅修改文件系统元数据,不需要移动实际文件,适合不需要保留dir1、dir2原有inode、权限、所属组等属性的场景:

import shutil
from pathlib import Path

# 替换为你实际的两个目录路径
dir1 = Path("./dir1")
dir2 = Path("./dir2")
# 临时目录名,确保和当前路径下现有目录不重名即可
temp_dir = Path("./temp_swap_dir")

shutil.move(str(dir1), str(temp_dir))
shutil.move(str(dir2), str(dir1))
shutil.move(str(temp_dir), str(dir2))

注意:执行前确保没有程序正在读写两个目录内的文件,当前路径下无同名的temp_swap_dir目录。

方案2:直接移动内部文件(兼容性最强)

如果要求保留dir1、dir2本身的属性(比如是特殊挂载目录、有固定权限配置),可以选择仅互换目录内部的所有内容:

import shutil
from pathlib import Path

dir1 = Path("./dir1")
dir2 = Path("./dir2")
# 临时文件夹放在dir1内,避免额外创建外部目录
temp_dir = dir1 / "temp_swap"
temp_dir.mkdir(exist_ok=False)

# 先转移dir1的所有内容到临时目录
for item in dir1.iterdir():
    if item != temp_dir:
        shutil.move(str(item), str(temp_dir / item.name))

# 转移dir2的所有内容到dir1
for item in dir2.iterdir():
    shutil.move(str(item), str(dir1 / item.name))

# 转移原dir1的内容到dir2
for item in temp_dir.iterdir():
    shutil.move(str(item), str(dir2 / item.name))

# 删除临时目录
temp_dir.rmdir()

注意事项

  • 两种方案执行前都建议先备份两个目录的内容,避免意外操作丢失文件
  • 如果两个目录内存在同名文件,移动操作会直接覆盖目标路径的同名文件,若需保留重名文件可提前添加判断逻辑,对文件重命名后再移动
  • 执行操作时确保没有其他程序正在读写两个目录中的文件,避免移动失败或文件损坏

内容的提问来源于stack exchange,提问作者let

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:45:00