迭代图像列表并将它们作为变量分配给python

Fra*_*tle 4 python iteration image python-imaging-library pillow

我正在尝试编写一个迭代python中的图像列表的函数,以便可以访问Pillow图像处理.

ImTestA = Image.open("A.png")
ImTestB = Image.open("B.png")
ImTestC = Image.open("C.png")
ImTest1 = Image.open("1.png")
ImTest2 = Image.open("2.png")
ImTest3 = Image.open("3.png")
ImTest4 = Image.open("4.png")
ImTest5 = Image.open("5.png")
ImTest6 = Image.open("6.png")
Run Code Online (Sandbox Code Playgroud)

我目前有上述内容,但我试图将其重构为可以指定不同长度的内容(使用带有AK或JZ的列表).

from PIL import Image

AtoC = ["A.png", "B.png", "C.png"]

def OpenAns(quest):
    AtoCImages = []
    for image in quest:
        AtoCImages.append(Image.open(image))
        return AtoCImages

OpenAns(AtoC)

ImTestA = AtoCImages[0]
ImTestB = AtoCImages[1]
ImTestC = AtoCImages[2]
Run Code Online (Sandbox Code Playgroud)

修复了之前的错误,并回到了以前遇到的同样问题.我只是想清理我的代码并让它干得好干.任何帮助表示赞赏.

Traceback (most recent call last):
  File "C:\ImageTest.py", line 13, in <module>
    ImTestA = AtoCImages[0]
NameError: name 'AtoCImages' is not defined
Run Code Online (Sandbox Code Playgroud)

也许我会有单独的文件,每个文件都有一个列表.如果我不能缩短它.

CT *_*Zhu 6

更改:

for image in AtoC:
    AtoCIm = []
    AtoCIm.append(Image.open(image))
Run Code Online (Sandbox Code Playgroud)

AtoCIm = []
for image in AtoC:
    AtoCIm.append(Image.open(image))
Run Code Online (Sandbox Code Playgroud)

会做的.

您将在每次迭代时创建一个新列表,而不是创建一次列表并向其添加新项目.因此,您的列表始终只有1个项目.试图获得第二项AtoCIm[1],将引发异常.

  • 看起来像一个课程作业...,嘿,我们都喝酒和编码,只有差异是我们喝的 (3认同)