2017-09-05 74 views
0

适用于如何在src = Processing中创建所有文件夹的步骤。 但是我怎样才能创建 - 在每个刚创建的文件夹中的所有数据(文件,文件夹)在模板中。因此,在刚刚创建的文件夹中执行shutil.copytree。步行槽文件夹 - 复制主文件夹名称,而不是主文件夹中的文件和文件夹

src = "C:/code/CopyFolder/Processing"    # must be the processing folder 
dest = "C:/code/CopyFolder/Runs"     # must be the runs folder 
template = "C:/code/CopyFolder/Template"   # source where to get Template files 

print src 
print dest 
print template 

listDirs = os.listdir(src) 
print listDirs 

for i in listDirs: 
    os.makedirs(dest + '/' + i) # should i do shutil.copytree() here for copy all files, folders from template in every just created folder? 
    print i + " " + "path is created" 
    #shutil.copytree(template, dest) 
+0

除了5个主目录之外,Processing中是否还有其他文件?如果没有,那么你可以创建一个文件夹名称列表和os.makedirs()他们都在一个循环。如果存在,只需使用os.path.isdir()剔除您的列表。 –

+0

我更新了代码,但得到错误183:无法创建文件已经存在。我的路径写错了吗? –

+0

这确实是不正确的。 os.path.dirname(src)只会给你'copyFolder',这显然已经存在于当前目录中。你想遍历目录列表并将dest连接到每个目录,然后makedir()生成的路径。 –

回答

0

您可以通过源文件夹中的每个目录列出并为目标中的每个目录建立路径。

import os 
from os import path 

dest = "C:/code/CopyFolder/Runs" 
src = "C:/code/CopyFolder/Processing" 

src_folders = (
    name for name in os.listdir(src) if path.isdir(
      path.join(src, name) 
     ) 
    ) 

for name in src_folders: 
    directory_path = path.join(dest, name) 
    os.mkdir(directory_path) 
+0

很好用! –

1

os.walk()在这里是不必要的,因为你只需要第一级。

src = "C:/code/CopyFolder/Processing"   # must be the processing folder 
dest = "C:/code/CopyFolder/Runs"   

listDirs = os.listdir(src) 

for i in listDirs: 
    os.mkdir(dest + '/' + i) 

编辑:OP显著变化的问题;请注意,此答案仅为源文件夹下第一级中的每个文件夹创建一个文件夹。

+0

这是伎俩,太棒了!为了我的兴趣,+'/'做了什么? –

+1

os.mkdir()在指定的路径上创建一个目录。路径只是一个字符串,就像你发布的src一样。但要从'C:/ code/CopyFolder/Processing'到'C:/ code/CopyFolder/Processing/subFolder',您需要在'..Processing'和'subFolder'之间添加一个斜线,否则您将创建文件夹'C:/代码/ CopyFolder/ProcessingsubFolder'。 –

+0

很好的帮助!我明白了,thnx! –

相关问题