Ответы пользователя по тегу Python
  • Как scr=data:image Сохранить в jpg\png?

    Wispik
    @Wispik
    import base64
    
    imgstring = "data:image/jpeg;base64,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"
    imgdata = base64.b64decode(imgstring.split('base64,')[1])
    filename = 'some_image.jpg'
    with open(filename, 'wb') as f:
        f.write(imgdata)
    Ответ написан
  • Не могу понять в чём ошибка, что не так?

    Wispik
    @Wispik
    Ошибка потому что блок elif должен быть сразу после блока if. Видимо, когда копировал, не все отступы перенес.
    Решение: начиная со строки agregator = [] и до elif все сдвинуть вправо
    Ответ написан
    Комментировать
  • Почему выдает ошибку?

    Wispik
    @Wispik
    class ItemService:
        def enrich_with_data(self, session: requests.Session, items: list[Item]) -> list[Item]:
            for item in items:
                response = self.repository.get_additional_data(session, item)
                item_info = response.json()['iteminfo']
                item.full_item_name = item_info['full_item_name']
                #print(item.full_item_name)
    
            return items, item.full_item_name

    в return item.full_item_name, что за переменная item? она доступна только в цикле, поэтому и ошибка
    Ответ написан
  • Как получить из json значение поиском по списку?

    Wispik
    @Wispik
    Можно отдельную функцию для поиска сделать:
    lst = {
        "applist": {
            "apps": [{
                "appid": 1941401,
                "name": "ASD"
            }, {
                "appid": 2170321,
                "name": "SDF"
            }, {
                "appid": 1825161,
                "name": "DFG"
            }]
            }
        }
    
    def find_name(appid):
        if res := list(filter(lambda x: x['appid'] == appid, lst['applist']['apps'])):
            return res[0]['name']
        return None
    Ответ написан
  • Почему не работает инлайн кнопка?

    Wispik
    @Wispik
    Потому что
    dp.register_callback_query_handler(accept, lambda call: True)

    обрабатывает все запросы и все что ниже него не будет работать
    Ответ написан
    Комментировать
  • Aiogram 'Can\'t parse keyboard button: field "request_contact" must be of type boolean' в чем проблема?

    Wispik
    @Wispik
    kb.row(KeyboardButton('Когда', 'Помощь'))
    вот тут ошибка, надо так:
    kb.row(KeyboardButton('Когда'), KeyboardButton('Помощь'))
    Ответ написан
    1 комментарий
  • Как написать опросник с вариантами ответа от 0 до 5, что бы условие выполнялось корректно?

    Wispik
    @Wispik
    Надо использовать register_next_step_handler() , вот почитай хотя бы это
    https://habr.com/ru/post/350648/

    Ну и выкинуть глобал из кода куда подальше
    Ответ написан
    4 комментария
  • Не могу решить задачу на подбрасывание монетки, что делать?

    Wispik
    @Wispik
    from random import randint
    
    
    attempts = []
    
    for i in range(10):
        res = []
        while True:
            res.append(randint(0, 1))
            if len(res) >= 3 and (res[-1]==res[-2]==res[-3]):
                break
        s = ''.join(['О' if s else 'Р' for s in res])
        print(f'{s} (попыток: {len(s)})')
        attempts.append(len(s))
    
    print(f'Среднее количество попыток: {sum(attempts) / len(attempts)}.')
    Ответ написан
    1 комментарий
  • Как победить EOFError: EOF when reading a line в python3.8?

    Wispik
    @Wispik
    Раз ты отправляешь код на сайт, которые его тестит, то очевидно что будет ошибка. Откуда input данные получит?
    Ответ написан
  • Как спарсить php network?

    Wispik
    @Wispik
    Так и парсить.
    Делай запрос на /statusUpdate.php
    Ответ написан
    Комментировать
  • Почему программа не записывает данные в CSV файл?

    Wispik
    @Wispik
    Это рабочий код. Посмотри файл members.csv в папке С://users/Anton
    Ответ написан
    Комментировать
  • Почему print не выводит все значения переменной в цикле?

    Wispik
    @Wispik
    if k == 10:
        continue

    При выполнении условия, цикл начинает следующею итерацию и принт соответственно не выполняется
    Ответ написан
    1 комментарий
  • Как отправить сообщение через APScheduler, не передавая аргумент message?

    Wispik
    @Wispik
    Сделай отдельную функцию:
    async def send_random_quote(message_id):
        x= quotes[randint(0,388)]
        await bot.send_message(message_id, x)

    И используй ее:
    scheduler.add_job(send_random_quote,'cron',day_of_week='mon-sun', hour=19,minute=6,kwargs={'message_id':  callback_query.from_user.id})
    Ответ написан
    1 комментарий
  • FastApi StaticFiles не работает?

    Wispik
    @Wispik
    Давно была похожая проблема, на stackoverflow нашел решение, что нужно раздачу статики и апи делать отдельно.
    Вот пример, из моего кода. Здесь без jinja2, но суть та же
    app = FastAPI()
    app_api = FastAPI()
    
    app.mount("/api", app_api)
    app.mount("/", StaticFiles(directory="static", html=True), name="static")
    
    @app.get('/', response_class=HTMLResponse)
    async def main_page():
        return HTMLResponse('index.html')
    
    
    @app_api.post('/login', response_class=JSONResponse)
    async def login(
        username: str = Body(...),
        password: str = Body(...)
    ):
        ...
    Ответ написан
    Комментировать
  • Как дополнять json файл?

    Wispik
    @Wispik
    Чтобы файл не заменялся, надо его сначала прочитать, изменить, а потом записать в файл
    Ответ написан
    Комментировать
  • Как отстортировать CSV по нечисловому значению?

    Wispik
    @Wispik
    Честно уверен, что есть либо какая-то библиотека, либо это просто можно покрасивее сделать. Но на первый взгляд пришла такая мысль (выглядит не очень красиво, зато работает)))
    reader = csv.reader(open("ip.csv"))
    
    def _sort(s):
        if s.lower() == 'last checked':
            return 0
        res = 0
        s = s.split('ago')[0].strip()
        if 'hour' in s:
            _s = s.split('hour')
            res += int(_s[0]) * 60 * 60
            s = _s[1].strip()
        if 'mins' in s:
            _s = s.split('mins')
            res += int(_s[0]) * 60
            s = _s[1].strip()
        if 'min' in s:
            _s = s.split('min')
            res += int(_s[0]) * 60
            s = _s[1].strip()
        if 'secs' in s:
            _s = s.split('secs')
            res += int(_s[0])
        return res
    
    sort_reader = sorted(reader, key=lambda x: _sort(x[7]))
    Ответ написан
    1 комментарий
  • Как исправить "AttributeError: module 'collections' has no attribute 'Iterable'"?

    Wispik
    @Wispik
    Установи старую версию питона. 3.7 подойдет, возможно 3.8, но это не точно
    Ответ написан
    Комментировать
  • Существует ли функция, которая возвращает абсолютно все комбинации значений из списка?

    Wispik
    @Wispik
    itertools.product(iter, repeat=3)
    Ответ написан
    Комментировать