newbie wants to compile python list of filenames in selected directories

M.E.Farmer mefjr75 at hotmail.com
Sun Feb 6 22:24:23 EST 2005


anthonyberet wrote:
> Hi, I am new at Python, and very rusty at the one language I was good

> at, which was BASIC.
>
> I want to write a script to compare filenames in chosen directories,
on
> windows machines. Ideally it would compose a list of strings of all
the
> filenames in the directories, and those directories would be chosable
by
> the user of the script.
>
> I am quite happy to do my own legwork on this , I realise it is
simple
> stuff, but can anyone point me in the right direction to start?
>
> Thanks

Cool! I like your attitude ;)
Others have given you a good start with os. In case you don't know os
has a great many path manipulation methods. Always try to use them so
you can insulate yourself from cross platform path nightmares.
A few of the highlights are:

### split a path
py> parts = os.path.split(r'c:\windows\media\ding.wav')
py> print parts
('c:\\windows\\media', 'ding.wav')

### join a path and part and do it right on any platform
py> path = os.path.join('c:\\windows\\media', 'ding.wav')
'c:\\windows\\media\\ding.wav'

### get basename of the file
py> base = os.path.basename('c:\\windows\\media\\ding.wav')
py> print base
'ding.wav'

Plus many more, be sure to study the os module if you are doing any
path manipulations.

Ok and now for something sorta different( alright, I was really bored )

. def glob_dir(dir):
.     """Return a list of *.py* (.py, .pyc, .pyo, .pyw)
.        files from a given directory.
.     """
.     import glob, os
.     # Get a list of files that match *.py*
.     GLOB_PATTERN = os.path.join(dir, "*.[p][y]*")
.     pathlist = glob.glob(GLOB_PATTERN)
.     return pathlist
.
. def list_dir(dir):
.     ''' Another way to filter a dir '''
.     import os
.     pathlist = os.listdir(dir)
.     # Now filter out all but py and pyw
.     filterlist = [x for x in pathlist
.                        if x.endswith('.py')
.                        or x.endswith('.pyw')]
.    return filterlist
hth,
M.E.Farmer




More information about the Python-list mailing list