在一个目录中的文件夹中创建多个子文件夹

时间:2017-02-10 21:16:26

标签: python

我需要帮助在目录中的每个文件夹中创建多个子文件夹。我想我很接近,但我一直在收到错误。我是Python的新手。这是我的代码:

import os
rootpath = "C:\Users\test"
sub_folders = ['map1', 'map2', 'map3', 'map4']
folders = []
for path in os.listdir(rootpath):
    folders.append(os.join.path(rootpath, path))
    print folders # the folders list now contains the full path to each folder
for f in folders:
    os.makedirs(os.path.join(f, folders))

我一直收到错误消息:

Traceback (most recent call last):
File "<interactive input>", line 2, in <module>
File "C:\Python27\ArcGIS10.3\lib\ntpath.py", line 66, in join
p_drive, p_path = splitdrive(p)
File "C:\Python27\ArcGIS10.3\lib\ntpath.py", line 115, in splitdrive
normp = p.replace(altsep, sep)
AttributeError: 'list' object has no attribute 'replace'

2 个答案:

答案 0 :(得分:2)

Windows不喜欢该语句rootpath = "C:\Users\test"有两个原因:(1)反斜杠与后续字符分组以生成您实际想要的其他内容,以及(2)Windows不愿意允许非特权用户在Users文件夹中创建子文件夹。

这是另一种选择。

>>> import os
>>> rootpath = r'c:\Users\Bill\test'
>>> os.mkdir(rootpath)
>>> os.chdir(rootpath)
>>> for sub_folder in ['map1', 'map2', 'map3', 'map4']:
...     os.mkdir(sub_folder)
...     
>>> 

r放在新文件夹名称的前面,以便按字面处理向后斜杠。 创建新的子文件夹,其中包含mkdir,然后chdir。 现在遍历您的子文件夹列表,并使用mkdir创建每个子文件夹。

有关r的详细信息和来自python docs的原始字符串:

  

字符串文字可以选择以字母'r''R'为前缀;   这些字符串称为原始字符串,并使用不同的规则   解释反斜杠转义序列

答案 1 :(得分:1)

谢谢比尔。我稍微修改了你的代码并弄明白了。这就是我的所作所为:

import oS
root_path =r"C:\Users\sworkman\test"
sub_folders = ['Map1, Map2, Map3, Map4']
folders = []
for path in os.listdir(root_path):
   folders.append(os.path.join(root_path, path))
   print folders

for f in folders:
    os.makedirs(os.path.join(f, folders))

for f in folders:
    os.chdir(f)
    for sub_folder in sub_folders:
        os.mkdir(sub_folder)

之前我没有意识到os.chdir方法。这非常有帮助。再次感谢。