如何使用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
相关产品推荐
相关产品推荐

