import pyttsx3
engine = pyttsx3.init()
for voice in engine.getProperty('voices'):
print(voice)
# тут id голоса, который ты выбрал
voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSTTS_V110_trTR_Tolga"
engine = pyttsx3.init()
engine.setProperty('voice', voice_id)
def requires_token(func):
@functools.wraps(func)
def wrapper(self, *args, **kwargs): #оборачиваем метод, а не функцию
try:
result = func(self, *args, **kwargs) # пробуем вызвать метод как есть
except InvalidToken: # кастомное исключение, которое должны выбрасывать методы
self._acquire_new_token() # получаем новый токен
result = func(self, *args, **kwargs) # пробуем еще раз
return result
return wrapper
OSError: dlopen(opus, 0x0006): tried: 'opus' (no such file), '/usr/local/lib/opus' (no such file), '/usr/lib/opus' (no such file), '/Users/similization/Programming/python/discord_bot/opus' (no such file)
c
в строке построй список вида [c.upper(), c.lower()]
, если это буква. Если не буква, список должен содержать один элемент.[['a', 'A'], ['.'], ['b', 'B'], ['c', 'C'], ['@'], ['d', 'D']]
itertools.product(*patterns)
и итерируешься по тому, что оно вернёт. # -*- coding: windows-1251 -*-
#сначала реализуем механизм, который позволяет получать объект дневник для пользователя
import typing
from functools import lru_cache
# говорим, что результаты вызова функции должны кэшироваться,
# но храниться в кэше должно не более 50 экземпляров класса Dnevnik
# при появлении новых экземпляров, самые старые будут выкинуты
@lru_cache(maxsize=50)
# принимаем ID пользователя Telegram, возвращаем или объект Dnevnik, или None
def get_user_dnevnik(user_id) -> typing.Optional[Dnevnik]:
# получаешь новый курсор для своего соединения с БД
# я фз как у тебя называется глобальная переменная, хранящая соединение,
# так что назвал её db_conn. Поправишь
cursor = db_conn.cursor()
# выбираем из таблицы логинов/паролей пару, соответствующую указанному пользователю
# имена таблицы и столбцов опять таки поправь, я не помню как они у тебя называются
cursor.execute("SELECT loginD, passwordD FROM users WHERE id = ?", (user_id,))
row = cursor.fetchone()
if row is None: # нет такого пользователя, возвращаем None
return None
# в запросе порядок столбцов сначала логин, потом пароль, так что row = (логин, пароль)
return Dnevnik(login=row[0], password=row[1]) # возвращаем объект Dnevnik
from html.parser import HTMLParser
bufer = '''<p>
<div>hi!
</p>'''
class MyHTMLParser(HTMLParser):
def __init__(self):
super().__init__()
self.open_tags = []
def handle_starttag(self, tag, attrs):
print("Start tag:", tag)
self.open_tags.append((tag, self.getpos()))
def handle_endtag(self, tag):
print("End tag :", tag)
unclosed_tags = []
# ищем, когда был открыт нужный тег
for i in range(len(self.open_tags)-1, -1, -1):
if self.open_tags[i][0] != tag:
unclosed_tags.append(self.open_tags[i])
else:
break
if len(unclosed_tags) == len(self.open_tags): # тег никогда и не был открыт
print(f"Closing tag {tag} has no matching opening tag!")
elif unclosed_tags: # тег был открыт, но он не последний
print("Following tags are not closed properly:\n", '\n'.join(f' {t} at line {line} pos {col+1}' for t,(line, col) in unclosed_tags))
del self.open_tags[-len(unclosed_tags)+1:] # сбрасываем незакрытые теги
else: # тег был открыт, и он последний - всё в порядке
del self.open_tags[-1]
def close(self):
super().close()
print('Processing done')
parser = MyHTMLParser()
parser.feed(bufer)
parser.close()
for row in records:
loginD = row[2]
passwordD = row[3]
d = Dnevnik(login=loginD, password=passwordD)
Если я комментирую импорт "from handlers import enter_client", в файле админа, то всё запускается, но естественно, функция работать не будет
Если я комментирую импорт "from handlers import enter_admin", в файле клиент, то не работает, ссылаясь на ошибку (ImportError: cannot import name 'enter_client' from partially initialized module 'handlers')
nun[1]+=i
possible.append(nun)
nun[1]-=i
b = []
a = [1, 2, 3]
b.append(a)
b.append(a.copy())
a.append(5)
print(b) # выведет [[1, 2, 3, 5], [1, 2, 3]]
print(b[0] is a) # выведет True, так как 0 элемент b - ссылка на a
print(b[1] is a) # выведет False, так как 1 элемент b - ссылка на отдельный список
product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
for combo in product(*parts):