Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2016 19:46:51

damon
Зарегистрирован: 2016-10-19
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

написать функцию генератор с параметром (d) которая возвращает все exe файлы из директории d
Понял что начать надо
def f(d):
сделать надо c помощью yield

Отредактировано damon (Ноя. 2, 2016 20:18:42)

Офлайн

#2 Ноя. 2, 2016 21:04:16

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

Вам помогут функции os.listdir и сравнение типа filename == ‘.exe’



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Ноя. 4, 2016 11:56:24

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

есть два варианта, наиболее оптимальный:

 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)

Офлайн

#4 Ноя. 4, 2016 18:50:48

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

Я думаю это очевидно, что такое решение не примут. Ведь явно задача стоит написать свой генератор, а не взять готовый



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Ноя. 4, 2016 19:49:10

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

izekia
проблема в том, что во втором случае мы сразу займем память списком, а в первом будем извлекать значения по одному

Вот тут большой вопрос…

В первом случае мы извлекаем все
Во втором поэтапно

Но в любом случае системой создается “снапшот” текущего состояния.

Где пруфы, что косяк в питоне, и после полного вычитывания снапшота он не закрывается?

А так “то на то равно” - что читаем с системного снапшота по одной записи, что скидываем снопшот в прогу, и закрываем его…

Отредактировано Iskatel (Ноя. 4, 2016 19:51:44)

Офлайн

#6 Ноя. 4, 2016 20:33:28

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

Iskatel
Но в любом случае системой создается “снапшот” текущего состояния.

Где пруфы, что косяк в питоне, и после полного вычитывания снапшота он не закрывается?

А так “то на то равно” - что читаем с системного снапшота по одной записи, что скидываем снопшот в прогу, и закрываем его…
я честно три раза перечитал)



Офлайн

#7 Ноя. 4, 2016 20:49:28

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

izekia
я честно три раза перечитал)

Пояснения требуются или прикол?

Питон такой питон что питон… все системные функции запрашивает у (не поверишь) системы.

Какая разница кто память выделил, системная ф-ция или твоя?

Офлайн

#8 Ноя. 4, 2016 20:54:29

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

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

задача такая что тут надо быть опытным извращенцем, чтобы код функции больше пяти строк получился



Офлайн

#9 Ноя. 4, 2016 21:02:29

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

Iskatel
Питон такой питон что питон… все системные функции запрашивает у (не поверишь) системы.
Какая разница кто память выделил, системная ф-ция или твоя?
а есть кто с диска читают напрямую через порты? про выделение памяти не совсем корректно - это детали реализации, для этой задачи разве это требуется?



Офлайн

#10 Ноя. 4, 2016 21:02:50

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

написать функцию генератор Срочно нужно

izekia
В смысле?
не использовать модуль glob



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version