[Tutor] filelist
Peter Otten
__peter__ at web.de
Sun Aug 5 11:38:19 CEST 2012
richard kappler wrote:
> Starting to work through "Programming Computer Vision with Python" in my
> -summer of learning python- quest. As I read through the intro to the PIL
> library, I came across the below code. When I read it, I said to my self
> "I don't see how that calls a set of files, there's no specificity. How
> does that know where to call from?" Then I convinced myself that, because
> I'm a beginner, I must be missing something, and ran it through the
> interpreter. Of course, I got an error message telling me filelist isn't
> defined. But now I'm kinda lost.
>
> If the directory holding the pics I want to work on is called
> practicephotos, should I declare something along the lines of filelist =
> ~/practicephotos/ or what?
In the draft of the book the author shows a way to create a list of images
in the next example
import os
def get_imlist(path):
""" Returns a list of filenames for
all jpg images in a directory. """
return [os.path.join(path,f) for f in os.listdir(path) if
f.endswith(".jpg")]
I you follow his instructions the snippet you provided could become
> [code]
with indentation and outfile assignment fixed
> from PIL import Image
> import os
import imtools
filelist = imtools.get_imlist(".")
> for infile in filelist:
> outfile = os.path.splitext(infile)[0] + ".jpg"
> if infile != outfile:
> try:
> Image.open(infile).save(outfile)
> except IOError:
> print "cannot convert", infile
> [/code]
However, he was a bit careless and the two examples don't exactly dovetail.
get_imlist() only returns files ending with .jpg -- and these are skipped by
the code you posted. You can fix that by changing get_imlist() as follows:
IMAGE_SUFFIXES = (".jpg", ".png", ".gif") # add more as needed
def get_imlist(path):
""" Returns a list of filenames for images in a directory. """
return [os.path.join(path,f) for f in os.listdir(path) if
f.endswith(IMAGE_SUFFIXES)]
This is still not very robust (what if the filename of an image ends with
".JPG" or ".jpeg" or ".something_completely_different"?) but at least you
have something that you can invoke with the python interpreter and that will
have an effect.
After that experience you should have learned to take the proviso in the
introduction seriously:
"""
What you need to know
- Basic programming experience. You need to know how to use an editor and
run scripts, how to structure code as well as basic data types. Familiarity
with Python [...] will help.
"""
Not only will it help, you won't have much fun with the book without it.
I suggest that you work through a general python tutorial before you go back
to the book.
http://wiki.python.org/moin/BeginnersGuide
More information about the Tutor
mailing list