Получите фильтрованный список файлов в каталоге

Метод readlines () читает до EOF с использованием readline () и возвращает список, содержащий строки.

Откройте файл sample.txt с помощью блокнота o из командной строки: type sample.txt

252
задан Bart 17 January 2014 в 12:58
поделиться

5 ответов

348
ответ дан 23 November 2019 в 02:52
поделиться

Можно использовать pathlib, который доступен в библиотеке стандарта Python 3.4 и выше.

from pathlib import Path

files = [f for f in Path.cwd().iterdir() if f.match("145592*.jpg")]
1
ответ дан 23 November 2019 в 02:52
поделиться

Можно определить шаблон и проверку на него. Здесь я взял и запускаю и заканчиваю шаблон и поиск их в имени файла. ФАЙЛЫ содержат список всех файлов в каталоге.

import os
PATTERN_START = "145592"
PATTERN_END = ".jpg"
CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))
for r,d,FILES in os.walk(CURRENT_DIR):
    for FILE in FILES:
        if PATTERN_START in FILE and PATTERN_END in FILE:
            print FILE
1
ответ дан 23 November 2019 в 02:52
поделиться

glob.glob () - это определенно способ сделать это (по Игнасио). Однако, если вам нужно более сложное сопоставление, вы можете сделать это с пониманием списка и re.match () , что-то вроде того:

files = [f for f in os.listdir('.') if re.match(r'[0-9]+.*\.jpg', f)]

Более гибкий, но, как вы заметили, менее эффективный.

114
ответ дан 23 November 2019 в 02:52
поделиться

используйте os.walk для рекурсивного перечисления файлов

import os
root = "/home"
pattern = "145992"
alist_filter = ['jpg','bmp','png','gif'] 
path=os.path.join(root,"mydir_to_scan")
for r,d,f in os.walk(path):
    for file in f:
        if file[-3:] in alist_filter and pattern in file:
            print os.path.join(root,file)
9
ответ дан 23 November 2019 в 02:52
поделиться
Другие вопросы по тегам:

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