在python中如何使用'map'创建一批目录

时间:2018-11-07 03:20:50

标签: python dictionary

我想像下面的代码一样使用map创建一批目录,但是似乎失败了。请你帮助我好吗?

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

我尝试[os.makedirs(i) for i in dir_list]并成功了,但是我真的想知道为什么map无法工作。

2 个答案:

答案 0 :(得分:1)

在Python 3中,map返回一个生成器,该生成器被延迟计算。这意味着在迭代地图对象之前,os.mkdirs的每个元素都不会被调用。

这很重要:dir_list和您所显示的列表理解都不打算像这样使用。它们将用于将一个序列转换为另一个序列。它们不是不是旨在用于执行功能的功能(例如创建目录)。

只写一个简单的循环就不要变得聪明:

map

这是正确的,Python式的,可读的和可维护的。

答案 1 :(得分:0)

正如@乔纳森·赛义德(Jonathon Said)所说: 在Python 3中,map返回一个生成器,该生成器被延迟计算。这意味着,直到对map对象进行迭代,才会在dir_list的每个元素上调用os.mkdirs。

所以您需要遍历地图对象

您可以进行此破解:

 list(map(os.makedirs, dir_list))