Сделать папку в каждой подпапке в каталоге? - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу создать такую ​​папку:

import os
rootfolder = r'C:\Users\user\Desktop\mainf'
for path, subdirs, files in os.walk(rootfolder):
    for i in subdirs:
        os.mkdir('newfolder')

mainf имеет 100 подпапок, которые пусты.Я хочу сделать папку с именем new folder в каждом из них.Код выше не работает.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я бы попробовал os.makedirs(path/to/nested/new/directories, exist_ok=True).

Это создаст каталог и все необходимые каталоги между ними.

Также посмотрите на os.scandir(path/to/dir), когда вы просматриваете каталог, потому что он возвращает эти объекты каталога, которые действительно удобно использовать (например, имеет абсолютный путь, говорит, существует ли он, говорит ли это файл / dir и т. Д.) .)

0 голосов
/ 16 ноября 2018

os.mkdir('newfolder') пытается создать newfolder в текущем каталоге независимо от переменных цикла.

Сначала вам нужно объединиться с root & subdir, проверить, что он еще не существует (так что вы можетезапустите его более одного раза) и создайте, если необходимо:

full_path_to_folder = os.path.join(path,i,'newfolder')
if not os.path.exists(full_path_to_folder):
   os.mkdir(full_path_to_folder)

после обсуждения в комментариях, кажется, что это работает, но будет повторяться бесполезно.path содержит пути к каталогам при сканировании, поэтому нет необходимости во внутреннем цикле.Просто проигнорируйте последние 2 аргумента, которые walk дает, и выполните:

for path, _, _ in os.walk(rootfolder):
    full_path_to_folder = os.path.join(path,'newfolder')
    if not os.path.exists(full_path_to_folder):
       os.mkdir(full_path_to_folder)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...