Python: os.listdir альтернативные/бесспорные расширения

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

7
задан Galilsnap 26 June 2010 в 02:44
поделиться

4 ответа

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

import glob
for f in glob.glob("*.f"):
    print f
21
ответ дан 6 December 2019 в 05:42
поделиться

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

[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')]
11
ответ дан 6 December 2019 в 05:42
поделиться

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

import fnmatch
import os

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

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

1
ответ дан 6 December 2019 в 05:42
поделиться
[s for s in os.listdir() if os.path.splitext(s) == 'f']
0
ответ дан 6 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: