Вопросы по теме 'contextmanager'

Объяснение Python __enter__ и __exit__
Я видел это в чьем-то коде. Что это значит? def __enter__(self): return self def __exit__(self, type, value, tb): self.stream.close() from __future__ import with_statement#for python2.5 class a(object): def...
313394 просмотров
schedule 09.10.2021

Оператор With и Threading: выполнение функции перед запуском
Этот вопрос является продолжением следующего вопроса: С инструкциями и потоками Python Я экспериментировал с api потоковой передачи Python. У меня есть этот код, который работает для того, чего я хочу достичь: ----> выполнение функции перед...
417 просмотров

Инкапсуляция повторных попыток в блок `with`
Я хочу инкапсулировать логику транзакций базы данных в блок with ; обертывание кода в транзакции и обработка различных исключений (проблемы с блокировкой). Это достаточно просто, однако я бы также хотел, чтобы блок инкапсулировал повторную попытку...
6510 просмотров

Вложенный диспетчер контекста Python на нескольких строках
В Python 2.6 мы использовали такой формат для нашего вложенного диспетчера контекста: with nested( context1, context2 ) as a, b: pass Начиная с Python 2.7 и новее, nested устарел. Я видел множество примеров нескольких...
12970 просмотров
schedule 16.10.2021

Почему диспетчер контекста не закрывает файловый дескриптор?
Я пытаюсь создать диспетчер контекста, который использует mmap , который сам является диспетчером контекста. Изначально у меня была тупая проблема с открытым файлом Почему нет mmap закрывает связанный файл (получение PermissionError: [WinError...
864 просмотров

Написание контекстного менеджера, который исправляет объект
В моем тестовом коде Python 3 много таких утверждений: from unittest.mock import patch user = User(...) with patch.object(MyAuthenticationClass, 'authenticate', return_value=(user, 'token'): # do something Теперь я хочу написать это как:...
397 просмотров
schedule 29.11.2021

вручную открыть диспетчер контекста
У меня вопрос, как я могу запустить любой диспетчер контекста без использования with ? В Python есть идея диспетчеров контекста, вместо того file = open('some_file', 'w') try: file.write('Hola!') finally: file.close() # end try...
1541 просмотров
schedule 20.11.2021

Рефакторинг if-else блокирует Python с помощью диспетчеров контекста?
Я хочу провести рефакторинг некоторых повторяющихся блоков кода, которые выглядят следующим образом: if condition == True: print("Doing some light work.") else: print("Doing some work.") pass # this may be different...
105 просмотров
schedule 18.09.2021

Создать блок с несколькими менеджерами контекста?
Предположим, у вас есть три объекта, которые вы получаете через диспетчер контекста, например, блокировку, соединение с базой данных и IP-сокет. Вы можете приобрести их: with lock: with db_con: with socket: #do stuff Но...
78424 просмотров
schedule 07.04.2022

Откройте список файлов с помощью / в качестве диспетчера контекста
Примечание . Мне известно о with open('f1') as f1, open('f2') as f2: ... синтаксис. Это другой вопрос. Учитывая список строк file_names , есть ли способ с помощью _3 _ / _ 4_ открывать каждое имя файла в нем, используя одну...
3467 просмотров
schedule 28.04.2022

Как я могу открыть кучу файлов (с управлением контекстом), не вставляя кучу отступов
У меня есть одноразовый код, извлеченный из функции удаления десятков тысяч каталогов и их содержимого. Это нормально, но мне интересно, могу ли я использовать «с open () как» для кучи файлов без отступов, отступов и отступов... with...
56 просмотров

Контекстный менеджер Python для временного назначения переменных
Мне часто нужно временно заменить значение переменной чем-то другим, выполнить некоторые вычисления, которые зависят от этой переменной, а затем восстановить исходное значение переменной. Например: var = 0 # Assign temporary value and do...
3289 просмотров

Лучшие практики + синтаксис для реализации контекстного менеджера на C ++
В нашей кодовой базе Python есть связанный с метриками код, который выглядит следующим образом: class Timer: def __enter__(self, name): self.name = name self.start = time.time() def __exit__(self): elapsed =...
4032 просмотров
schedule 07.05.2022

Является ли хорошим тоном перебирать файл, используя только цикл for?
Я наткнулся на код, который выполняет итерацию по строкам в файле, например: for line in open(filename, 'r'): do_all_the_things() Это более питоническая версия чего-то вроде: with open(filename, 'r') as f: for line in f:...
110 просмотров

В диспетчере контекста Python наблюдается жуткое действие
Использование contextmanager в Python 3 (я не тестировал Python 2) имеет странное поведение в отношении переменных, объявленных в области видимости в предложении with . Мне кажется, что переменные ведут себя как «призрачное действие на расстоянии»...
107 просмотров
schedule 19.07.2022

Обнаружение вложенности контекстного менеджера
Недавно мне было интересно, есть ли способ определить, вложен ли менеджер контекста. Я создал классы Timer и TimerGroup: class Timer: def __init__(self, name="Timer"): self.name = name self.start_time = clock()...
826 просмотров

Вызывается ли метод __exit__ при наличии исключения внутри менеджера контекста?
Представьте, что у нас есть контекстный менеджер с именем abc . Итак, в приведенном ниже коде метод __exit__ , определенный внутри abc, вызывается, если есть исключение. with abc: print("entered context manager") raise...
106 просмотров
schedule 23.08.2022

Частичное применение функций внутри контекстного менеджера (с ..)
По сути, у меня есть API, который предоставляет класс Foo() с некоторым методом Foo.bar(arg1, name). Есть ли способ применить объект functools.partial к Foo.bar внутри контекстного менеджера, т.е. вот так: x=Foo() with...
591 просмотров
schedule 01.09.2022

Обработка исключений внутри менеджеров контекста
У меня есть код, в котором я пытаюсь получить доступ к ресурсу, но иногда он недоступен и приводит к исключению. Я попытался реализовать механизм повторных попыток с помощью менеджеров контекста , но не могу обработать исключение, вызванное...
26325 просмотров
schedule 18.09.2022

Попытка понять python с операторами и менеджерами контекста
Я новичок в этом и просто пытаюсь понять оператор with . Я так понимаю, что предполагается замена блока try / except . Теперь предположим, что я делаю что-то вроде этого: try: name='rubicon'/2 # to raise an exception except Exception as...
12264 просмотров
schedule 21.09.2023