如何从图像列表中创建打开图像命令列表



我需要从图像列表中创建一个打开的图像命令列表。我必须这样做,而不是使用"open image"因为我需要将这种格式的数据传递给函数

让我解释一下。

这是我的格式:

img_my_list=['img_1.png','img_2.png', 'img_3.png']

这是我需要的函数格式(我不能在函数中使用for):

img_open_format_list = [(open(join(dirname(__file__), 'img_1.png'), 'rb'), 'image/png'),
(open(join(dirname(__file__), 'img_2.png'), 'rb'), 'image/png'),
(open(join(dirname(__file__), 'img_3.png'), 'rb'), 'image/png')]

如何转换列表?

除非用作上下文管理器,否则每个open都应该伴随着close

contextlib.ExitStack非常适合这个任务。

from contextlib import ExitStack
img_my_list=['img_1.png','img_2.png', 'img_3.png']
with ExitStack() as stack:
images = [(stack.enter_context(open(img, 'rb')), 'image/png') for img in img_my_list]
...  # do work

当您退出作用域时,所有打开的图像将被关闭。

我发现这可以用map来完成:

img_my_list = ['img_1.png','img_2.png', 'img_3.png']

img_open_command_list = map(lambda x: (open(x, 'rb'), 'image/png'), img_my_list)

这样我就得到了我想要的打开命令列表:list(img_open_command_list)。这些图片在我的报告中是完美的。

相关内容

  • 没有找到相关文章