有没有一种方法可以在不递归复制的情况下复制子文件夹?

Is there a way to copy subfolder without copying recursively?

我正在尝试从目录复制子目录,但我意识到复制的第一个子文件夹已被复制 'recursively'。我不喜欢那样。我想完整复制子文件夹

import os
import shutil

#---- Create the directries

 os.makedirs("Test/Dir-A/Sub-dir-A")
 os.makedirs("Test/Dir-A/Sub-dir-B")
 os.makedirs("Test/Dir-B/Sub-dir-A")
 os.makedirs("Test/Dir-B/Sub-dir-B")
 os.makedirs("Test/Dir-C/Sub-dir-A")
 os.makedirs("Test/Dir-C/Sub-dir-B")

selectdirs = ["Dir-A", "Dir-B"]

alldirs = os.listdir("Test")

specificcourses = [folder for folder in alldirs if folder in selectdirs]

for f in specificcourses:
    shutil.move(os.path.join("Test", f), os.path.join("Test", "New-dir"))

当我运行代码时,我在New-dir中复制了Sub-dir-A、Sub-dir-B和Dir-B。然而,我想要新目录中的 Dir-A 和 Dir-B。

import os
import re

#---- Create the directries

try:
    os.makedirs("Test/Dir-A/Sub-dir-A")
    os.makedirs("Test/Dir-A/Sub-dir-B")
    os.makedirs("Test/Dir-B/Sub-dir-A")
    os.makedirs("Test/Dir-B/Sub-dir-B")
    os.makedirs("Test/Dir-C/Sub-dir-A")
    os.makedirs("Test/Dir-C/Sub-dir-B")
except:
    pass

sub = (os.walk("Test"))

try:
    os.mkdir("NewDir")
except:
    pass

for f in sub:
    for s in f[1]:
        os.mkdir(re.sub("^Test", "NewDir", os.path.join(f[0], s)))

在复制之前,您需要确保您的“New-dir”存在。

这可以如您所愿:

import os
import shutil

#---- Create the directries

os.makedirs("Test/Dir-A/Sub-dir-A")
os.makedirs("Test/Dir-A/Sub-dir-B")
os.makedirs("Test/Dir-B/Sub-dir-A")
os.makedirs("Test/Dir-B/Sub-dir-B")
os.makedirs("Test/Dir-C/Sub-dir-A")
os.makedirs("Test/Dir-C/Sub-dir-B")

selectdirs = ["Dir-A", "Dir-B"]

alldirs = os.listdir("Test")

specificcourses = [folder for folder in alldirs if folder in selectdirs]

os.makedirs("Test/New-dir")
for f in specificcourses:
    input()
    shutil.move(os.path.join("Test", f), os.path.join("Test", "New-dir"))