2017-09-05 78 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! –

相關問題