class filter(object):
import names
names.name1 = 'Абдурахман ибн Хоттаб'
# names.json
["Дима", "Маша", "Елена"]
# main.py
import json # чтобы легко и удобно сохранять структуры данных в файл
import sys # чтобы узнать, где лежит main.py, и сохранить рядом
from pathlib import Path # чтобы работать с путями к файлам
MAIN_PY = Path(sys.argv[0]) # путь до main.py
MAIN_DIR = MAIN_PY.parent.resolve() # путь до папки, где лежит main.py
CFG = MAIN_DIR / 'names.json' # путь до файла, куда сохраняем данные
with CFG.open('rt', encoding='utf-8') as cfg: # открываем на чтение
names = json.load(cfg) # читаем всё содержимое файла
# пользуемся полученными данными - списком имён
print(names)
names[0] = "Абдурахман ибн Хоттаб"
# сохраняем список обратно
with CFG.open('wt', encoding='utf-8') as cfg: # открываем на запись
json.dump( # пишем всё содержимое списка в файл
names, # что будет содержимым файла
cfg, # в какой файл записать
ensure_ascii=False, # чтобы не заменял кириллицу на коды символов
indent=2, # чтобы были красивые отступы. Если убрать, файл будет весь в одну строку.
)
Python 3.11.7 (tags/v3.11.7:fa7a6f2, Dec 4 2023, 19:24:49) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> l = locals()
>>> l['x'] = 1
>>> x
1
>>>
wmctrl -c 'Имя моего окна'
должно закрыть первое окно, в заголовке которого встречается подстрока "имя моего окна" без учёта регистра.wmctrl -F -c 'Имя моего окна'
должно закрыть первое окно, заголовок которого в точности равен "Имя моего окна".class MainWindow(tk.Tk):
"""Главное окно приложения."""
def __init__(self):
"""Конструктор вызывается при создании окна"""
super().__init__()
self.title('Моё окно')
self.protocol('WM_DELETE_WINDOW', self.__done) # прописываем реакцию на закрытие окна
... # тут создаёшь элементы управления и проводишь прочую инициализацию
# в том числе создаёшь и запоминаешь вспомогательные окна
def __done(self):
"""Вызовется при попытке закрытия окна"""
... # тут делаешь что тебе нужно при закрытии
# например, закрываешь вспомогательные окна
self.destroy() # если не сделать этот вызов, окно на самом деле не закроется - иногда это нужно
if __name__ == '__main__':
root = MainWindow()
root.mainloop()
def long_worker_thread(event: threading.Event):
... # тут начальная подготовка. имей ввиду, что цикл начнётся с ожидания
while not event.wait(1.0): # ждём пока пройдёт заданное время - или пока event не будет взведено
... # тут работу работаем - но не слишком долго, чтобы проверки event.wait() делались регулярно!
... # завершение. Произойдёт, если был сделан break, или если event было взведено
stop_worker = threading.Event()
thread = threading.Thread(target=long_worker_thread, args=(stop_worker,))
thread.start()
... # что-то делаем пока поток крутится
stop_worker.set() # ожидание в потоке прервётся немедленно, не дожидаясь конца интервала
thread.join() # поэтому можно спокойно дождаться, пока поток не закончит работу - это будет быстро
for _ in range(попыток)
.for _ in range(attempts):
try:
reader, writer = await asyncio.wait_for(
asyncio.open_connection(server, port),
timeout
)
except (asyncio.TimeoutError, Exception):
... # реагируем на ошибку соединения, пишем в лог или ещё что
else:
break # соединение принято
else: # относится к for, выполнится если не было break
... # реагируем на исчерпание попыток
# потом делаем return или throw
# если управление дошло досюда, соединение установлено
... # работаем
Где хранятся все эти значение 1,2,3,4, ведь у моего 'x' нету же звездочки(*х), чтобы собрать столько аргументов.
Return the currently running Task instance, or None if no task is running.
import asyncio
async def print_task():
print(asyncio.current_task())
async def foobar():
await print_task()
async def main():
print('Direct call')
await foobar()
print('create_task')
task = asyncio.create_task(foobar())
await task
# asyncio.run(main()) # даст такой же результат
asyncio.get_event_loop().run_until_complete(main())