2017-04-22 61 views
1

我試圖從文本文件中的列表創建多個文件夾(在當前目錄中),然後使用另一個列表在這些文件夾中創建多個子文件夾(我希望這已經足夠清楚了嗎?)該文本文件是約40個日期的列表。我如何使用Python中的兩個列表中的多個子文件夾製作多個文件夾

這是到目前爲止我的代碼:

import os, sys 



subfolder_names = ['1st Eng', '2nd eng', '3rd Eng', 'Chief Eng', 'Cryo Eng', 'Electrical Eng', 'Master', '1st Mate', '2nd Mate', '3rd Mate'] 
topfolder_names = [] 

with open('datelist.txt', 'r') as f: 
    for line in f: 
     line = line.strip('\n') 
     topfolder_names.append(line) 

這是我迷路了,(我真的不知道我在做什麼)我如何得到「topfolder_names」文件夾中有「subfolder_names '作爲子文件夾?

for topfolder_name in topfolder_names: 
    os.makedirs(os.path.join(topfolder_names, subfolder_names)) 

這是我得到的錯誤。

Traceback (most recent call last): 
    File "C:\Users\Kids\Documents\Visual Studio 2015\Projects\Stormpetrel 
Refit\folder3.py", line 18, in <module> 
    os.makedirs(os.path.join(topfolder_names, topfolder_names)) 
    File "C:\Python27\lib\ntpath.py", line 65, in join 
    result_drive, result_path = splitdrive(path) 
    File "C:\Python27\lib\ntpath.py", line 116, in splitdrive 
    normp = p.replace(altsep, sep) 
AttributeError: 'list' object has no attribute 'replace' 

感謝

更新:我發現,似乎工作的解決方案,我用一個嵌套循環。

for topfolder_name in topfolder_names: 
    for subfolder_name in subfolder_names: 
     os.makedirs(os.path.join(topfolder_name, subfolder_name)) 

回答

0

os.makedirsos.join功能可以在一個時間上的單個文件夾名稱每個唯一的工作。你一次傳遞你的整個子文件夾列表,這是行不通的。

相反,嘗試添加第二個循環在子文件夾:

for top in topfolder_names: 
    for sub in subfolder_names: 
     os.makedirs(os.path.join(top, sub)) 

你也可以在兩個循環合併到一個使用itertools.product。這個循環變成:

for top, sub in itertools.product(topfolder_names, subfolder_names): 

product函數返回一個迭代,這將產生兩元組。 for循環將每個元組的兩個值解包爲topsub

+0

感謝您的回覆,我沒有看到這之前我更新我的帖子與我發現的修復,我結束了完全按照你說的第二個循環。非常感激。 – Aiden

相關問題