# определяем функцию, которая загружает расписание из файла
def load_schedule():
try:
... # реальная ошибку у тебя где-то здесь!
except FileNotFoundError: # но при ошибке ты глотаешь исключение и молча возвращаешь None
return None, None
def check_schedule2():
start_time, end_time = load_schedule()
... # а тут не проверяем, вернула ли функция значение или None
import re
from decimal import Decimal # не используй float для денег!
sum_regexp = re.compile(r'^((?:\D*\d+)+?)(?:\D+(\d{2}))?\D*$')
def string_to_sum(s: str) -> Decimal:
match = sum_regexp.match(s)
if match is None:
raise ValueError(f'Not a correct sum: {s!r}')
integer_part = re.sub(r'\D', '', match.group(1))
fraction = match.group(2) or '00'
fixed_string = f'{integer_part}.{fraction}'
return Decimal(fixed_string)
tests = {
'0': Decimal('0.0'),
'1000': Decimal('1000.0'),
'10.00': Decimal('10.0'),
'10,00': Decimal('10.0'),
'1 000': Decimal('1000.0'),
'1,000,000.00': Decimal('1_000_000.00'),
'1000 рублей 90 копеек': Decimal('1000.90'),
}
for inp, res in tests.items():
print(inp, end=': ')
try:
actual_res = string_to_sum(inp)
except ValueError as err:
print('Exception: ', err)
else:
if res != actual_res:
print('Mismatch, got', actual_res)
else:
print('OK')
import logging
from aiogram import Bot, Dispatcher, executor, types, utils
API_TOKEN = 'replace_this_with_your_api_token'
# Configure logging
logging.basicConfig(level=logging.INFO)
# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN, parse_mode="html")
dp = Dispatcher(bot)
def get_keyboard():
keyboard = types.ReplyKeyboardMarkup()
button = types.KeyboardButton("Share Position", request_location=True)
keyboard.add(button)
return keyboard
@dp.message_handler(content_types=['location'])
async def handle_location(message: types.Message):
lat = message.location.latitude
lon = message.location.longitude
reply = "latitude: {}\nlongitude: {}".format(lat, lon)
await message.answer(reply, reply_markup=types.ReplyKeyboardRemove())
@dp.message_handler(commands=['locate_me'])
async def cmd_locate_me(message: types.Message):
reply = "Click on the the button below to share your location"
await message.answer(reply, reply_markup=get_keyboard())
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
tail -f файл.log
. Почитай про неё.screen
. Тогда ты сможешь сконнектиться к сессии screen когда угодно./home/root
, и делаешь cd ../folder/folder2
, ты будешь пытаться перейти в каталог /home/folder/folder2
.