Форум сайта python.su
0
написать функцию генератор с параметром (d) которая возвращает все exe файлы из директории d
Понял что начать надо
def f(d):
сделать надо c помощью yield
Отредактировано damon (Ноя. 2, 2016 20:18:42)
Офлайн
221
Вам помогут функции os.listdir и сравнение типа filename == ‘.exe’
Офлайн
12
есть два варианта, наиболее оптимальный:
from os import path from glob import iglob def f(d): yield from iglob(path.join(d, '*.exe'))
from os import path from glob import glob def f(d): for filename in glob(path.join(d, '*.exe')): yield filename
Отредактировано izekia (Ноя. 4, 2016 12:01:58)
Офлайн
221
Я думаю это очевидно, что такое решение не примут. Ведь явно задача стоит написать свой генератор, а не взять готовый
Офлайн
3
izekia
проблема в том, что во втором случае мы сразу займем память списком, а в первом будем извлекать значения по одному
Отредактировано Iskatel (Ноя. 4, 2016 19:51:44)
Офлайн
12
Iskatelя честно три раза перечитал)
Но в любом случае системой создается “снапшот” текущего состояния.
Где пруфы, что косяк в питоне, и после полного вычитывания снапшота он не закрывается?
А так “то на то равно” - что читаем с системного снапшота по одной записи, что скидываем снопшот в прогу, и закрываем его…
Офлайн
3
izekia
я честно три раза перечитал)
Офлайн
12
JOHN_16В смысле?
Я думаю это очевидно, что такое решение не примут. Ведь явно задача стоит написать свой генератор, а не взять готовый
filter(lambda x: x.endswith('.exe'), os.listdir(d))
filelist = os.listdir(d) for fn in (filelist): if fn.endswith('.exe'): yield fn
Офлайн
12
Iskatelа есть кто с диска читают напрямую через порты? про выделение памяти не совсем корректно - это детали реализации, для этой задачи разве это требуется?
Питон такой питон что питон… все системные функции запрашивает у (не поверишь) системы.
Какая разница кто память выделил, системная ф-ция или твоя?
Офлайн
221
izekiaне использовать модуль glob
В смысле?
Офлайн