Python: os.listdir альтернатива / некоторые расширения - PullRequest
7 голосов
/ 26 июня 2010

Можно ли просматривать файлы с определенными расширениями с помощью команды os.listdir?Я хочу, чтобы он работал, поэтому он может показывать только файлы или папки с .f в конце.Я проверил документацию и ничего не нашел, так что не спрашивайте.

Ответы [ 5 ]

20 голосов
/ 26 июня 2010

glob хорош в этом:

import glob
for f in glob.glob("*.f"):
    print f
10 голосов
/ 26 июня 2010

Не спрашивайте что?

[s for s in os.listdir() if s.endswith('.f')]

Если вы хотите проверить список расширений, вы можете сделать очевидное обобщение,

[s for s in os.listdir() if s.endswith('.f') or s.endswith('.c') or s.endswith('.z')]

или этот другой способ написать немного короче:

[s for s in os.listdir() if s.rpartition('.')[2] in ('f','c','z')]
1 голос
/ 26 июня 2010

Существует еще одна возможность, не упомянутая до сих пор:

import fnmatch
import os

for file in os.listdir('.'):
    if fnmatch.fnmatch(file, '*.f'):
        print file

На самом деле, именно так реализован модуль glob, поэтому в этом случае glob проще и лучше, но модуль fnmatch может пригодиться в других ситуациях, например, при обходе дерева с помощью os.walk.

0 голосов
/ 05 июня 2014

Попробуйте это:

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 голосов
/ 26 июня 2010
[s for s in os.listdir() if os.path.splitext(s) == 'f']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...