Python: os.listdir alternative/некоторые расширения
можно ли видеть файлы с определенными расширениями с помощью ОС.команду listdir? Я хочу, чтобы он работал, поэтому он может показывать только файлы или папки .f в конце. Я проверил документацию и ничего не нашел, так что не спрашивайте.
5 ответов
не спрашивай что?
[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
.
попробуйте это:
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 ]