Действительно ли возможно видеть файлы с определенными расширениями с командой os.listdir? Я хочу, чтобы это работало так, это может показать только файлы или папки с.f в конце. Я проверил документацию, и ничего не нашел, не, спрашивают - также.
glob
хорош в этом:
import glob
for f in glob.glob("*.f"):
print f
Не спрашивайте, что?
[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')]
Есть еще одна возможность, не упомянутая до сих пор:
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.f'):
print file
На самом деле так реализован модуль glob
, поэтому в данном случае glob
проще и лучше, но модуль fnmatch
может быть полезен в других ситуациях, например при обходе дерева с помощью os.walk
.
[s for s in os.listdir() if os.path.splitext(s) == 'f']