我有一个目录“Dst 目录”,其中包含文件和文件夹,我有一个“src 目录”,其中也包含文件和文件夹。我想要做的是将“src 目录”的内容移动到“Dst 目录”并覆盖任何同名的文件。因此,例如“Src Directory\file.txt”需要移动到“Dst Directory\”并覆盖现有的 file.txt。这同样适用于某些文件夹,移动文件夹并将内容与“dst 目录”中的同一文件夹合并
我目前正在使用 shutil.move 将 src 的内容移动到 dst 但如果文件已经存在并且它不会合并文件夹,它就不会这样做;它只会将文件夹放在现有文件夹中。
更新:为了让事情更清楚一点,我正在做的是将存档解压缩到 Dst 目录,然后将 Src 目录的内容移到那里并重新压缩,从而有效地更新 zip 存档中的文件。这将重复添加新文件或文件的新版本等,这就是它需要覆盖和合并的原因
已解决:我通过使用 distutils.dir_util.copy_tree(src, dst) 解决了我的问题,这将文件夹和文件从 src 目录复制到 dst 目录,并在需要的地方覆盖/合并。
原文由 Artharos 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
copy()
代替,它愿意覆盖目标文件。如果您随后希望第一棵树消失,只需rmtree()
完成迭代后将其分开。http://docs.python.org/library/shutil.html#shutil.copy
http://docs.python.org/library/shutil.html#shutil.rmtree
更新:
在源代码树上执行
os.walk()
。对于每个目录,检查它是否存在于目标端,以及os.makedirs()
如果它丢失了。对于每个文件,只需shutil.copy()
文件将被创建或覆盖,以适当的为准。