2017-04-22 59 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

相关问题