В Python, как использовать «карту» для создания пакета каталогов - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу создать пакет каталогов, используя map, как показано в следующем коде, но, похоже, это не удалось. Не могли бы вы мне помочь?

import os
dir_list = ['./aaa', './bbb']
map(os.makedirs, dir_list)

Я пытаюсь [os.makedirs(i) for i in dir_list], и это удается, но я действительно хочу знать, почему map не может работать.

Ответы [ 2 ]

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

Как сказал @ Джонатон: В Python 3 map возвращает генератор, который вычисляется лениво. Это означает, что os.mkdirs не будет вызываться для каждого элемента dir_list, пока объект карты не будет повторен.

, поэтому вам нужно перебрать объект карты

вы можете сделать это взломать:

 list(map(os.makedirs, dir_list))
0 голосов
/ 07 ноября 2018

В Python 3 map возвращает генератор, который вычисляется лениво. Это означает, что os.mkdirs не будет вызываться для каждого элемента dir_list, пока объект карты не будет повторен.

Вот сделка: ни map, ни показанные вами списки не предназначены для такого использования. Они должны использоваться для преобразования одной последовательности в другую. Они не предназначены для использования с функциями, которые делают вещи (например, создают каталоги).

Просто напишите простой цикл и не пытайтесь быть умным:

for d in dir_list:
    os.mkdirs(d)

Это правильно, Pythonic, читабельно и ремонтопригодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...