Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   finding an exact match of filenames (http://www.velocityreviews.com/forums/t735647-finding-an-exact-match-of-filenames.html)

jimgardener 10-16-2010 08:31 AM

finding an exact match of filenames
 
I am trying to code a function that takes a directory name and a name
string and try to return a list of fully qualified names of all files
in the directory having an exact match of name.

example,
I have these files in the directory,
'googlegroup_python__111.txt',
'googlegroup_python__112.txt',
'googlegroup_python_django__111.txt',
'googlegroup_python_django__112.txt',
'googlegroup_python_grok__111.txt',

When I call
get_filenames('mydir', 'googlegroup_python' )

I expect to get a list like
['/mydir/googlegroup_python__111.txt', '/mydir/
googlegroup_python__112.txt']

but not the other three.

I was careless when I coded the method as

def get_filenames(dirname,filenamestr):
match_filenames=[dirname+os.sep+x for x inos.listdir(dirname) if
x.startswith(filenamestr)]
return match_filenames

because this would return all 5 of the above filenames.I think reg
expression maybe the way to do this..but not very sure as to how I can
do it..

Any help or suggestions greatly appreciated
thanks
jim

Peter Otten 10-16-2010 08:53 AM

Re: finding an exact match of filenames
 
jimgardener wrote:

> I am trying to code a function that takes a directory name and a name
> string and try to return a list of fully qualified names of all files
> in the directory having an exact match of name.
>
> example,
> I have these files in the directory,
> 'googlegroup_python__111.txt',
> 'googlegroup_python__112.txt',
> 'googlegroup_python_django__111.txt',
> 'googlegroup_python_django__112.txt',
> 'googlegroup_python_grok__111.txt',
>
> When I call
> get_filenames('mydir', 'googlegroup_python' )
>
> I expect to get a list like
> ['/mydir/googlegroup_python__111.txt', '/mydir/
> googlegroup_python__112.txt']
>
> but not the other three.
>
> I was careless when I coded the method as
>
> def get_filenames(dirname,filenamestr):
> match_filenames=[dirname+os.sep+x for x inos.listdir(dirname) if
> x.startswith(filenamestr)]
> return match_filenames
>
> because this would return all 5 of the above filenames.I think reg
> expression maybe the way to do this..but not very sure as to how I can
> do it..
>
> Any help or suggestions greatly appreciated
> thanks
> jim


Try the glob module first:

>>> import os, glob
>>> print "\n".join(os.listdir("mydir"))

googlegroup_python_django__111.txt
googlegroup_python__112.txt
googlegroup_python_grok__111.txt
googlegroup_python_django__112.txt
googlegroup_python__111.txt

>>> print "\n".join(glob.glob("mydir/googlegroup_python__???.txt"))

mydir/googlegroup_python__112.txt
mydir/googlegroup_python__111.txt

If glob() isn't selective enough you may have to resort to regular
expressions.

Peter


All times are GMT. The time now is 04:44 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.