directory listing
Michael Konrad
mkonrad at syr.edu
Fri Nov 11 16:58:30 EST 2005
"Fredrik Lundh" <fredrik at pythonware.com> wrote:
> "SU News Server" <mkonrad at syr.edu> wrote:
>
>> I've struggled with this for quite a while and I'm am just not sure
>> what is going on. I have the following code
>> import os
>>
>> def buildList( directory='/Users/mkonrad' )
>>
>> dirs = [ ]
>>
>> listing = os.listdir(directory)
>>
>> for x in listing:
>> if os.path.isdir(x):
>> dirs.append(x)
>>
>> return dirs
>>
>> This always returns an empty list.
>> Now if I change it so that directory='.' or directory=os.getcwd()
>> Then it returns a list of directories.
>
> hint: if you're not sure what's going on in your program, adding
> a print statement or two is an easy way to figure it out. like, say:
>
> for x in listing:
> print x
> if os.path.isdir(x):
> dirs.append(x)
>
Did that and I was just getting a bunch of [ ].
> (try this before you continue)
>
> :
> :
> :
>
> the problem is that os.listdir returns a list of filenames, without
> the preceeding directory name. you can add an os.path.join
>
> for x in listing:
> x = os.path.join(directory, x)
> if os.path.isdir(x):
> dirs.append(x)
OK. This works except each entry in dirs now includes the full path.
Is there an unjoin? :) I haven't spent any time trying to work this out.
>
> or use the glob module instead:
>
> listing = glob.glob(os.path.join(directory, "*"))
>
> hope this helps!
>
> </F>
>
>
>
>
More information about the Python-list
mailing list