_, *params = message.text.split(maxsplit=1)
# если параметр команды указан, то забираем, иначе устанавливаем город пустым
city = params[0] if params else ''
# аналогично можно просто прекратить выполнение команды, если параметр у команды не указан, что наверное логичнее
if params:
city = params[0]
else:
bot.send_message(message.chat.id, 'Укажите город')
return
city = message.text.split(maxsplit=1)[1]
observation = owm.weather_at_place(city)
# и соответственно изменить в информационной строке
answer = 'В городе ' + city + ...
answer = f'В городе {city} сейчас {weather.get_detailed_status()} \n'
{
12345: ['01.01.2020', 'школа', 'вариант'],
12350: ['01.04.2020', 'дом', 'карантин']
}
dict_ #наш словарь
user_list # введенный пользователем список (учитываем, что в словарь запихнули цифры, а пользователь вводит строки, т.е. нужно будет преобразовать
# находим массив ключей с совпадающим значением
result = [key for key, value in dict_.items() if value == user_list]
# просто проверка, есть ли наш список среди значений
if user_list in dict_.values():
os.walk
не может заранее знать кол-во файлов, соответственно нельзя будет заранее масштабировать прогресс бар. Если нужен прогресс, тогда заранее полностью пройдитесь по всему дереву через os.walk, запомните в массив структуру и посчитайте кол-во файлов. А уже потом проходитесь по конечному массиву списка файлов и обновляйте прогресс. CODES_FILENAME = "codes.txt"
def claim_code(code):
with open(CODES_FILENAME) as f:
codes = f.read().splitlines()
# если код есть в списке, то удаляем из списка и выполняем что еще нужно в случае успеха
if code in codes:
codes.remove(code)
with open(CODES_FILENAME, "w") as of:
of.write('\n'.join(codes))
# здесь например запуск какой-то функции для проставления бета-тестера
return True
return False
# затем при получении ввода пользователя вызывать нашу процедуру
res = claim_code('298')
print(res)