Gettings subdirectories

  • Thread starter Florian Lindner
  • Start date
F

Florian Lindner

Hello,
how can I get all subdirectories of a given directories? os.listdir() gives
me all entries and I've found no way to tell if an object is a file or a
directory.

Thanks,

Florian
 
S

Sybren Stuvel

Florian Lindner enlightened us with:
how can I get all subdirectories of a given directories?
os.listdir() gives me all entries and I've found no way to tell if
an object is a file or a directory.

Why, doesn't your os.path.isdir() function work?

Sybren
 
J

johnzenger

It's a bit overkill, but consider using os.walk.

root, dirnames, filenames = os.walk(r"C:\").next() # (in real code,
you'd want to catch exceptions here)
print dirnames
 
B

BartlebyScrivener

root, dirnames, filenames = os.walk(r"C:\").next()

Wow. How does that work? Just point me to where I can read about it. I
don't see it under os.walk.

That's cool.

Thanks,

Rick
 
B

Ben Finney

BartlebyScrivener said:
Wow. How does that work? Just point me to where I can read about it. I
don't see it under os.walk.

We must be reading different Python websites.

walk(top[, topdown=True [, onerror=None]])

walk() generates the file names in a directory tree, by walking
the tree either top down or bottom up. For each directory in the
tree rooted at directory top (including top itself), it yields a
3-tuple (dirpath, dirnames, filenames).

<URL:http://docs.python.org/lib/os-file-dir.html#l2h-1638>
 
E

Edward Elliott

Ben said:
We must be reading different Python websites.

walk(top[, topdown=True [, onerror=None]])

walk() generates the file names in a directory tree, by walking
the tree either top down or bottom up. For each directory in the
tree rooted at directory top (including top itself), it yields a
3-tuple (dirpath, dirnames, filenames).

Maybe he meant os.path.walk, although that's still not quite what he had.
 
B

BartlebyScrivener

Sorry that I was unclear.

I sorta know how os.walk works. It's the .next() trick that I had never
seen before. For instance, if you run that statement without the
..next() on it, it says "Too many items to unpack" but with the .next()
it stops it somehow, right where I want it to stop.

It's an iterator method, right? I found it in Beazely, now I'll try to
understand it. Sorry to trouble you.

rick
 
A

Adonis

Florian said:
Hello,
how can I get all subdirectories of a given directories? os.listdir() gives
me all entries and I've found no way to tell if an object is a file or a
directory.

Thanks,

Florian


Here is a quick hack:

import os
import os.path

givenDir = "/"
listing = os.listdir(givenDir)
for item in listing:
joinPath = os.path.join(givenDir, item)
normPath = os.path.normpath(joinPath)
if os.path.isdir(normPath):
print normPath
 
P

Philippe Martin

Hi,

The second edition of "Programming Python - O'REILLY - Mark Lutz" shows how
to do that using "os.path.walk"

Philippe
 
A

alex23

Florian said:
how can I get all subdirectories of a given directories?

If you're not adverse to a solution outside of the standard lib, I
highly recommend the 'path' module:
[path(u'C:\\cmdcons'), path(u'C:\\Config.Msi'), path(u'C:\\Logon'),
path(u'C:\\Program Files'), path(u'C:\\Python24'),
path(u'C:\\RECYCLER'), path(u'C:\\System Volume Information'),
path(u'C:\\WINDOWS'), path(u'C:\\WINSRC')]

http://www.jorendorff.com/articles/python/path/

Hope this helps.

- alex23
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,143
Latest member
DewittMill
Top