Python: os.listdir alternative/certain extensions
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 d开发者_如何转开发ocumentation, and found nothing, so don't ask.
glob
is good at this:
import glob
for f in glob.glob("*.f"):
print(f)
Don't ask what?
[s for s in os.listdir() if s.endswith('.f')]
If you want to check a list of extensions, you could make the obvious generalization,
[s for 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 for s in os.listdir() if s.rpartition('.')[2] in ('f','c','z')]
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
.
Try this:
from os import listdir
extension = '.wantedExtension'
mypath = r'my\path'
filesWithExtension = [ f for f in listdir(mypath) if f[(len(f) - len(extension)):len(f)].find(extension)>=0 ]
[s for s in os.listdir() if os.path.splitext(s) == 'f']
精彩评论