在python中合并两个文件夹

lit*_*rat 6 python merge

我需要合并两个文件夹,

文件夹命名为 12345 和 12345_

我将如何合并两者?

我试过了,但我最终得到了“12345”。

for file in files:
    subFolder = os.path.join(destpath, file[:6])
    if not os.path.isdir(subFolder):
        os.makedirs(subFolder)
    shutil.copy(os.path.join(root, file), subFolder)
Run Code Online (Sandbox Code Playgroud)

小智 7

如果替换目标目录中的文件(如果它们已经存在)是可以接受的,那么从 Python 3.8 开始,可以使用 ; 轻松实现这一点shutil.copytree

import shutil
shutil.copytree("src_root", "dst", dirs_exist_ok=True)
Run Code Online (Sandbox Code Playgroud)

从这里的文档:

递归地将以 src 为根的整个目录树复制到名为 dst 的目录并返回目标目录。默认情况下还将创建包含 dst 所需的所有中间目录。

如果 dirs_exist_ok 为 false(默认值)并且 dst 已存在,则会引发 FileExistsError。如果 dirs_exist_ok 为 true,则如果遇到现有目录,复制操作将继续,并且 dst 树中的文件将被 src 树中的相应文件覆盖。

3.8 版新增:dirs_exist_ok 参数。


Omi*_*ani 0

您可以使用类似的方法,将文件夹一中的所有文件复制到文件夹二,以便文件夹二将包含文件夹一和文件夹二中的所有文件:

#!/usr/bin/env python

import subprocess as sbp
import os

path=raw_input('Please enter a path\n')
fol = os.listdir(path)
p2 = raw_input('Please enter a path\n')

for i in fol:
    p1 = os.path.join(path,i)
    p3 = 'cp -r ' + p1 +' ' + p2+'/.'
    sbp.Popen(p3,shell=True)
Run Code Online (Sandbox Code Playgroud)