Is it possible to see files with certain extensions with the os.listdir command? I want it to work so it may show only files or folders with .f at the end. I checked the documentation, and found nothing, so don't ask.
+1
A:
Don't ask what?
[s in os.listdir() if s.endswith('.f')]
If you want to check a list of extensions, you could make the obvious generalization,
[s in os.listdir() if s.endswith('.f') or s.endswith('.c') or s.endswith('.z')]
or this other way is a little shorter to write:
[s in os.listdir() if s.rpartition('.')[2] in ('f','c','z')]
David Zaslavsky
2010-06-26 02:45:50
There are a lot of things that are explicit function calls in other languages that are replaced by built-in operations in Python. It's tricky keeping track sometimes. For example, the various adapter templates in C++ standard library are simply `lambda` in Python. It's one of my favorite things about Python.
Mike DeSimone
2010-06-26 02:49:58
"Don't ask" means "don't ask me, 'did you check the documentation, what did it say?'"
Ned Batchelder
2010-06-26 02:51:23
@Ned: I kind of figured that, it was a half-rhetorical question.
David Zaslavsky
2010-06-26 02:53:41
+8
A:
glob
is good at this:
import glob
for f in glob.glob("*.f"):
print f
Ned Batchelder
2010-06-26 02:50:06
+1 wow, that helped a lot! But cant we just do print(glob.glob("*.py")) ?
Galilsnap
2010-06-26 02:55:41
You can do that, glob.glob returns a list, do what you want with it.
Ned Batchelder
2010-06-26 03:14:26
+1
A:
There is another possibility not mentioned so far:
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.f'):
print file
Actually this is how the glob
module is implemented, so in this case glob
is simpler and better, but the fnmatch
module can be handy in other situations, e.g. when doing a tree traversal using os.walk
.
Philipp
2010-06-26 08:06:13