os.path.isfile and wildcard for directory name

Peter Otten __peter__ at web.de
Thu Dec 30 04:01:36 EST 2010


smainklh at free.fr wrote:

> I'm just beginning to learn python language and i'm trying to do something
> and i can't figure it out.
> 
> I want to test if a file exists but my path contain a directory name that
> differs from a server to another.
> In shell i would have done something like that :
> 
> #!/bin/bash
> 
> mypath=/dire*/directory02/
> myfile=filename
> 
> myfile=toto
> 
> if [ -f $mypath/$myfile ]
>    then
>        echo "File $file exists"
> fi
> 
> 
> How can i do the same thing (wildcard in a directory name) in python
> please ?

Given

$ mkdir yadda{1..10}
$ touch yadda{5,7}/alpha
$ mkdir yadda{2,4}/alpha

You can get a list of candidates with

>>> import glob
>>> candidates = glob.glob("yadda*/alpha")
>>> candidates
['yadda5/alpha', 'yadda2/alpha', 'yadda4/alpha', 'yadda7/alpha']

and then use isfile() to find the actual files:

>>> import os
>>> [f for f in candidates if os.path.isfile(f)]
['yadda5/alpha', 'yadda7/alpha']

Peter



More information about the Python-list mailing list