Iterate over a list of images and assign them as variables in python

13,995

Change:

for image in AtoC:
    AtoCIm = []
    AtoCIm.append(Image.open(image))

to

AtoCIm = []
for image in AtoC:
    AtoCIm.append(Image.open(image))

will do it.

You are creating a new list every iteration, rather than creating a list once and appending new items to it. Therefore, your list always has only 1 item. Attempting to get the 2nd item, AtoCIm[1], will raise exception.

Share:
13,995
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    I am trying to write a function that iterates over a list of images in python so that they are accessible for Pillow image processing.

    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")
    

    I currently have the above but am trying to refactor it into something I can assign different length to (use a list with A-K or J-Z).

    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]
    

    Fixed earlier error, and went back to same problem as before. I am just trying to clean up my code and have it nice and DRY. Any help is appreciated.

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

    Maybe I will just have separate files with a list in each. If I cant shorten this up.

  • CT Zhu
    CT Zhu almost 9 years
    looks like a course assignment..., hey, we all drink and code, only difference being what we drink