[Tutor] Regex to find files ending with one of a given set of extensions

Dayo Adewunmi contactdayo at gmail.com
Mon Feb 22 10:44:31 CET 2010


Steven D'Aprano wrote:
> On Mon, 22 Feb 2010 04:23:04 am Dayo Adewunmi wrote:
>   
>> Hi all
>>
>> I'm trying use regex to match image formats:
>>     
>
> Perhaps you should use a simpler way.
>
> def isimagefile(filename):
>     ext = os.path.splitext(filename)[1]
>     return (ext.lower() in 
>     ('.jpg', '.jpeg', '.gif', '.png', '.tif', '.tiff'))
>
>
> def findImageFiles():
>     someFiles = [
>     "sdfinsf.png","dsiasd.dgf","wecn.GIF","iewijiefi.jPg","iasjasd.py"]
>     return filter(isimagefile, someFiles)
>
>
>   
>> $ python test.py
>> Traceback (most recent call last):
>>   File "test.py", line 25, in <module>
>>     main()
>>   File "test.py", line 21, in main
>>     findImageFiles()
>>   File "test.py", line 14, in findImageFiles
>>     findImages = imageRx(someFiles)
>> TypeError: '_sre.SRE_Pattern' object is not callable
>>     
>
> The error is the line 
>
> findImages = imageRx(someFiles)
>
>
> You don't call regexes, you have to use the match or search methods. And 
> you can't call it on a list of file names, you have to call it on each 
> file name separately.
>
> # untested
> for filename in someFiles:
>     mo = imageRx.search(filename)
>     if mo is None:
>         # no match
>         pass
>      else:
>         print filename
>
>
>
>
>   
I incorporated this into my code:

def isimagefile(filename):
    ext = os.path.splitext(filename)[1]
    return (ext.lower() in 
    ('.jpg', '.jpeg', '.gif', '.png', '.tif', '.tiff'))


And it's working fine now. Thanks! :-)

Dayo


More information about the Tutor mailing list