Python: os.listdir alternative/certain extensions

后端 未结 5 1457
梦如初夏
梦如初夏 2021-01-05 05:15

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 doc

相关标签:
5条回答
  • 2021-01-05 05:31
    [s for s in os.listdir() if os.path.splitext(s) == 'f']
    
    0 讨论(0)
  • 2021-01-05 05:36

    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.

    0 讨论(0)
  • 2021-01-05 05:43

    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')]
    
    0 讨论(0)
  • 2021-01-05 05:52

    glob is good at this:

    import glob
    for f in glob.glob("*.f"):
        print(f)
    
    0 讨论(0)
  • 2021-01-05 05:55

    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 ]
    
    0 讨论(0)
提交回复
热议问题