Windows 如何从python中的两个列表中创建包含多个子文件夹的多个文件夹

Windows 如何从python中的两个列表中创建包含多个子文件夹的多个文件夹,windows,python-2.7,Windows,Python 2.7,我试图从一个文本文件的列表中创建多个文件夹(在当前目录中),然后使用另一个列表在每个文件夹中创建多个子文件夹。(我希望这足够清楚?)文本文件是一个大约40个日期的列表 以下是我目前的代码: import os, sys subfolder_names = ['1st Eng', '2nd eng', '3rd Eng', 'Chief Eng', 'Cryo Eng', 'Electrical Eng', 'Master', '1st Mate', '2nd Mate', '3rd Mat

我试图从一个文本文件的列表中创建多个文件夹(在当前目录中),然后使用另一个列表在每个文件夹中创建多个子文件夹。(我希望这足够清楚?)文本文件是一个大约40个日期的列表

以下是我目前的代码:

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\u names”文件夹将“subfolder\u 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'

os.makedirs
os.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
循环将每个元组中的两个值解压为
top
sub
os.makedirs
os.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
循环将每个元组中的两个值解压到
top
sub

感谢您的回复,在我用我找到的修复程序更新帖子之前,我没有看到这一点,我最终完全按照您对第二个循环所说的做了。非常感谢。谢谢你的回复,在我用我找到的补丁更新我的帖子之前,我没有看到这个,我最终完全按照你说的做了第二个循环。非常感谢。