有没有一种方法可以在不递归复制的情况下复制子文件夹?
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"))
我正在尝试从目录复制子目录,但我意识到复制的第一个子文件夹已被复制 '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"))