Код: Выделить всё
def _yield_fname(host_address, usr, pwd, datapath):
with paramiko.SSHClient() as ssh_client:
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(host, username=usr, password=pwd)
stdin, stdout, stderr = ssh_client.exec_command(
'find . -type d -maxdepth 1 -printf "%f\n"'
)
for line in stdout:
yield fname
def get_foos():
foos= []
for fname in self._yield_fname(self.FOO_PATH):
foos.append(Foo.from_fname(fname))
return foos
def get_bars():
bars= []
for fname in self._yield_fname(self.FOO_PATH):
bars.append(Bar.from_fname(fname))
return bars
В моем случае я планирую всегда использовать yield_fname от начала до конца, чтобы соединение всегда было закрыто. Должен ли я беспокоиться о том, что кто-то (например, я в будущем) воспользуется генератором, не израсходовав его полностью и оставив соединение открытым? Есть ли способ предотвратить это?
(Кстати, здесь я решил использовать функцию генератора, потому что хотел избежать повторения списка имен файлов два или более раз).
Подробнее здесь: https://stackoverflow.com/questions/788 ... -generator