Задать вопрос
Ответы пользователя по тегу Python
  • Почему появляется ошибка Sqlite3.OperationalError: table users has no column named name?

    @rPman
    Что за одинарная ковычка после скобки
    CREATE TABLE IF NOT EXISTS users (' <---
    и она же идет в конце списка описания полей

    т.е. sqlite создает таблицу с единственным полем, имя которого
    id INTEGER auto_increment P...EXT, email TEXT, trip TEXT, seek TEXT, extra TEXT
    прямо так со всеми запятыми и пробелами

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

    @rPman
    Access denied for user
    пользователю (в mysql это пара 'юзер%хост') не выданы права на вызов insert, 'обратитесь к вашему администратору базы данных', вполне возможно пользователь был верно настроен для создания резервной копии (требуется только чтение) а на модификации нет
    Ответ написан
    Комментировать
  • Как собрать исполняемый файл nuitka из под windows на macos и linux?

    @rPman
    Это называется кросскомпиляция, формально она возможна, так как промежуточно nuitka генерирует c++ код, и его уже после компилирует с помощью gcc, который в свою очередь умеет и разные архитектуры и разные ос (с оговорками).

    Из linux например точно с помощью mingw можно собирать windows приложения... по уму не должно быть особых проблем для этого, вопрос только в организации процесса

    Нужный тебе issue все еще открыт, но там обсуждают как это сделать.
    Ответ написан
    Комментировать
  • Как можно шифроваться от сайтов при использовании selenium?

    @rPman
    по типу гугла
    гугл один из сложнейших сайтов для автоматизации, они защищаются от ботов десятилетиями

    Правильно, авторизуешься вручную с сохранением авторизации и переносишь куки в профиль браузера, используемого в selenium

    Если все же нужно именно автоматизировать процесс авторизации, то в общем это симуляция действия пользователя, проверяй нужное ли у тебя сейчас окно, ищи элементы окна в которые нужно вводить текст, дальше в зависимости от паранои владельца сайта, либо напрямую устанавливай значения input либо симулируй нажатия кнопок и действия мыши, скурпулезно учитывая задержки, отслеживая капчи и т.п.

    Если защиты нет то элементы ищутся легко тем же css - document.querySelector('css selector'), полученный объект можно менять типа .value='текст' а ссылки и кнопки кликать .click()
    Ответ написан
    1 комментарий
  • Как связать YandexGPT с базой данных?

    @rPman
    При наличии доступа к весам llm, мощностям для finetuning и переобучения, специалистам по нейронным сетям, можно сделать ряд сопроводительны нейронок, которые будут помогать принимать решение о дальнейших действиях, закодировать большое количество 'дорожек' из llm к формальным базам данных, и сделать задачу якобы решенной.

    По факту llm будет решать одну единственную задачу - текстовый интерфейс на естественном языке к интерфейсу к базе данных. Т.е. набор функционала и запросы, которые можно делать к базе нужно будет закодировать заранее.

    Если не углубляться
    - во первых, тебе нужно на основе llm сделать классификатор, который будет из текста пользователя понимать, intent - какое именно действие он желает сделать (для этого обучают нейронку на основе pretrained llm, возможно убирают последние слои, заменяя их на новые, веса которых нужно будет найти и обучить на основе подготовленной базы вопросов пользователей и соответствующих им реакций, с некоторой долей вероятности можно попробовать без обучения спрашивать у умной llm типа chatgpt4, к сожалению chatgpt3.5 и сравнимые с ней плохо с этим справляются, точнее это вопрос творческий и возможно вместо одного универсального промпта тут нужно готовить франкенштейна из большого количества разных, llm-ка от яндекса не подойдет).
    - во вторых, это сбор информации, отличный пример - человек спрашивает брать ли завтра зонтик, мало сети понять что для ответа на вопрос нужно знать какая будет погода завтра (а завтра это через сколько часов?), нужно понять где этот человек находится и возможно задать наводящий вопрос... это я еще молчу про контекст беседы, может пользователь обсуждает о том что взять с собой в поездку на следующей неделе, т.е. вот уже другое время и место (фраза взять с собой может подразумевать - положить в багаж).
    Я видел примеры промптов, с помощью которых из лога беседы можно вытягивать элементы информации (список этих элементов придется заранее забивать соответственно тому интерфейсу, который выбран как целевой на первом шаге), что то типа проанализируй, достаточно ли в данном тексте информации для ответа на вопрос, выделяя в промпте цель, собранную информацию и часть лога беседы, может сжатой через саморизацию с фильтром - нужную для данной задачи (этакая симуляция большого окна контекста).
    Вот тут у директора по развитию ии от яндекс спрашивали как раз

    Не получится брать сырой поток сообщений, добавлять к ним промпт и надеяться получить сразу результат, это кропотливая работа, по преобразованию потока сообщений в некую выжимку, работа с ней разными запросами и заранее подготовленными нейронками (это на порядок эффективнее, кстати то где слабые сети еще могут давать результат, повторяю, нужен доступ к весам, оборудованию и собирать датасеты)

    p.s. С некоторой долей риска можно просить на ходу нейронку генерировать sql запросы на основе вопросов пользователя, результат будет с большими ошибками, чем умнее llm-ка тем сложнее эти ошибки будет обнаружить (в автоматическом режиме я имею в виду).

    upd. вот тут из гигачата сделали внутреннюю базу и как то интегрировали нейронку чтобы ею пользоваться, подробности не сообщили но в статье и комментариях есть ссылки на работы и технологии
    Ответ написан
    1 комментарий
  • Как удалить много строк (порядка 500.000) из csv файла в Python?

    @rPman
    csv не простой формат, строки в нем могут содержать разделители, ковычки и даже переводы на следующие строки. Поэтому рекомендуется работать с ним через библиотеки.

    Но если ты точно знаешь, что таких сложных ситуаций нет, и можно обойтись простым split, то код будет простой... читаешь построчно файл, парсишь колонки, и тут же из нужных формируешь строку, удалив ненужные колонки и пропуская не нужные строки, записываешь в новый файл.

    По окончанию работы, если ошибок не будет, старый файл удаляешь (или переименовываешь его в xxx.bak) а новый переименовываешь под старым именем
    Ответ написан
    Комментировать
  • Как спарсить данные с TrandingView?

    @rPman
    Данные там лежат в огромном json прямо встроенном в саму страницу, которая грузится без каких либо особенностей, тупо wget-ом, очень странное решение но
    <script type="application/prs.init-data+json">{"FYBZHq":{"context":{"request_context":{"user":{"is_authenticated":true,"is_...}}</script>
    пример FYBZHq►data►news►data►items►0►
    id	:	prime:0273264f867b8:0
    title	:	Результаты торгов акциями в секторе основных торгов Московской биржи
    storyPath	:	/news/prime:0273264f867b8:0/
    sourceLogoId	:	prime
    published	:	1701792002
    source	:	ПРАЙМ
    urgency	:	2
    permission	:	headline
    provider	:	prime
    Ответ написан
    Комментировать
  • Почему вылетает программа при записи в .txt файл?

    @rPman
    у тебя prices определена как global, добавь global prices в этот метод либо определи prices как мембер класса и убери эту global.
    Ответ написан
    Комментировать
  • Как обрабоать данные полученные с POST?

    @rPman
    {identification: "4242", password: "424234", remember: false}
    это json строка, ее разбором на python можно заниматься с помощью штатной библиотеки json
    data = json.loads('{identification: "4242", password: "424234", remember: false}')
    print(data['remember'])
    Ответ написан
  • Каким образом можно обучить ИИ распознавать лицо python?

    @rPman
    Вроде бы openvino может работать без tensorflow (и скорее всего умеет работать с intel ускорителями), вот пример их модели распознавания эмоций
    Ответ написан
    1 комментарий
  • Как сгенерировать случайное имя файла?

    @rPman
    return random_name + '.pdf'  # Добавляем расширение .pdf к случайному имени


    upd.
    gigachat от сбера (бесплатно без санкций)
    как изменить этот код чтобы сгенерировать случайное имя файла с .pdf в конце

    import random
    import os
     
    def generate_random_name():
        characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
        random_name = ''
        for i in range(10):
            random_name += random.choice(characters)
        return random_name
     
    def rename_file(file_path):
        new_name = generate_random_name()
        directory = os.path.dirname(file_path)
        new_file_path = os.path.join(directory, new_name)
        os.rename(file_path, new_file_path)
        return new_file_path
     
    file_path = 'C:\\2\out.pdf'
    new_file_path = rename_file(file_path)
    print(f'Файл переименован в {new_file_path}')

    -------------- ответ --------------------------------
    Чтобы изменить код так, чтобы он генерировал случайное имя файла с расширением .pdf в конце, можно использовать следующий код:

    import random
    import os
    
    def generate_random_name():
        characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
        random_name = ''
        for i in range(10):
            random_name += random.choice(characters)
        return random_name + '.pdf'
    
    def rename_file(file_path):
        new_name = generate_random_name()
        directory = os.path.dirname(file_path)
        new_file_path = os.path.join(directory, new_name)
        os.rename(file_path, new_file_path)
        return new_file_path
    
    file_path = 'C:\\2\\out.pdf'
    new_file_path = rename_file(file_path)
    print(f'Файл переименован в {new_file_path}')


    В этом коде мы добавили метод generate_random_name(), который возвращает случайное имя файла с расширением .pdf. Затем мы изменили функцию rename_file, чтобы она использовала новое имя файла, сгенерированное методом generate_random_name(), в качестве последнего имени файла.
    Ответ написан
    3 комментария
  • Как ввести длинный поток байтов?

    @rPman
    Ввести как константу в исходниках? самое простое base64 encoding
    base64.b64decode('твоя base64 строка')

    а сам исходный файл кодируй либо какой либо утилитой либо онлайн либо напиши программу на python в 3 строчки
    -------------

    есть утилита xxd, она преобразует файл в набор 16-ричных цифр, добавить к ним \x и заключить в ковычки b'\x...' получишь свою строку

    -----------

    chatgpt сгенерировал такую программу, чтобы сделать это самому да еще и печатные символы в код не преобразовывать, выглядит вроде верным кодом
    import string
    
    # Откройте файл в режиме чтения байтов и прочитайте его содержимое
    with open('your_file', 'rb') as f:
        byte_content = f.read()
    
    # Преобразуйте байты в строку байтов
    byte_string = ''
    for b in byte_content:
        if chr(b) in string.printable and b not in (0x0a, 0x0d):  # Проверка, является ли символ печатным и не является ли он символом новой строки или возврата каретки
            byte_string += chr(b)
        else:
            byte_string += '\\x{:02x}'.format(b)
    
    # Выведите строку байтов
    print(byte_string)
    Ответ написан
    Комментировать
  • Обход блокировки API openai?

    @rPman
    Мой ответ не про openai в частности а в целом про прокси.

    Арендуешь vps с поддержкой ssh (т.е. любой) и ничего не настраивая на нем кроме может пользователя (команда useradd ... и пароль passwd) и опционально настраиваешь беспарольную авторизацию ssh на своем локальном компьютере (смотри как настраивать твой любимый клиент ssh) делов на 1 минуту. А дальше, в своем клиенте добавляешь настройку тунеля -Dпорт (это ключ ssh, например в putty он называется Dynamic) и после подключения к своей vps-ке (в этом окне ssh ничего больше не надо делать, пусть висит) у тебя локально на комьютере будет поднят socks прокси сервер, который прописываешь в браузере или где тебе надо. Например -D1080 даст socks5 прокси по адресу localhost:1080

    Теперь про аренду vps, идешь на поисковик дешевых vps-ок lowendstock и выбираешь себе от 2 бакса в год (но это совсем ущербные), там же почти все принимают оплату биткоинами. У меня годами работают vps-ки с ценой от 1$ в месяц до 3$ (последняя для моих скриптов с 1gb ram и 20gb ssd, не самая шустрая но свои $ отрабатывает на ура)

    p.s. если vps-ка на основе kvm (точнее можно и на любом но нужен модуль tun) то есть шанс настроить ssh сервер на работу vpn-ом буквально

    upd. к сожалению в россии провайдеры стали потихоньку ломать ssh протокол
    , и он рандомно может быть очень медленным, больших скоростей не жди, у меня на ростелекоме с 5мбайт/с может упасть до 100кбайт/сек и держаться так часами (притом что канал у ростелекома широкий, я с того же huggingface на 25мбайт/cек качал гигабайтами нейронки)
    Ответ написан
    3 комментария
  • Как Python и Selenium заставить найти текст?

    @rPman
    Тестируй css селекторы в отладочной консоли браузера, используя, либо штатный querySelector('xxx'), либо, при наличии, jquery $('xxx'). Используй встроенный генератор css селектора (правая кнопка на элементе, копировать,...)
    Ответ написан
    1 комментарий
  • Почему в этом коде при проверке слов с помощью оператора in в скобках он работает как надо, а без скобок по другому?

    @rPman
    Это не должно работать, or это логический оператор, т.е. ты буквально пытаешься сравнить строковые константы как логическое выражение которое true/false, а затем пытаешься результат сравнения найти в массиве с помощью in, который введённая строка (массив символов), хз что он там у тебя находит, но явно не то что ожидаешь.

    Уличная скобки, ты меняешь приоритет операций, и сначала у тебя отрабатывает in, с ближайшим словом, а затем or строки истинные, должно быть всегда true
    Ответ написан
    Комментировать
  • Подойдет ли для парсинга сайта Амазон библиотека Selenium Stealth на Python?

    @rPman
    Главный вопрос, почему именно amazon? почему именно selenium-stealth? Вы пробовали другие инструменты и они не сработали?

    Как можно на самом старте завязывать свою инфраструктуру на облачные решения, у которых за норму установлено направление на вендорлок? Вы хотите платить десятикратную цену? Вы хотите платить за свои мелкие ошибки с тарификацией за трафик а чаще с планом - пока не кончатся выделенные деньги?

    p.s. я не нашел продукта под названием Amazon Selenium Stealth, но нашел статьи по использованию amazon lambda и библиотеки selenium-stealth
    Ответ написан
  • Как установить Python 3.9.6 на Ubuntu 20.04 LTS?

    @rPman
    Можно воспользоваться ppa репозитарием 'от сообщества'

    А вообще странно что ты не попытался даже погуглить, первая же ссылка тупо на твой вопрос.

    p.s. очень смешно, уже есть готовые бесплатные ИИ ассистенты, способные не просто болтать но и искать в интернете (майкрософтовский bing chat), я удивлен что количество простых вопросов на площадке не уменьшилось, неужели не знаете? как можно пропустить персонального ассистента, который благодаря интернету умнее (ладно эрудированней) любого обывателя и не только, он за тебя не только ищет но и читает найденные статьи и дает из них нужную выжимку.
    Ответ написан
  • Как переубедить нейросеть (чтобы данные из промпта считались более важными)?

    @rPman
    С LLM у тебя только два варианта - добавлять информацию в запрос, а в случае с противоречиями, тюнить и усложнять подводку, типа если ты хочешь чтобы везде где сетка использует цвет красный она говорила
    бибип:
    Дальше в ответе вместо цвета - 'красный' ты должен писать бибип, с учетом правил русского языка, рода и склонения. Назови три цвета у светофора

    Три цвета у светофора: бибип, желтый и зеленый.



    Так вот тюнинг, очень противоричивая технология, в каких то случаях она значительно улучшает результат, есть даже ускоренный тюнинг, затрагивающий очень небольшой процент весов или даже только веса векторов запроса но не самой сетки (есть открытый проект peft с поддержкой практически всех доступных моделей), к сожалению openai не дает красивого доступа к этому, хотя для младших моделей типа gpt35turbo или davinci у нее такой механизм есть.

    Этот механизм имеет недостатки, из-за проблемы 'катастрофического забывания', чем больше данных ты пытаешься добавить в модель через дообучение, тем больше она забывает ранее выученных (с этим борются подмешиванием данных из изначальной обучающей выборки но это не так просто)
    Ответ написан
    Комментировать
  • Как быстро распарсить много json файлов на python?

    @rPman
    Если узкое место - разбор огромного json, то тебе нужен потоковый парсер, их огромное количество, гугл для питона выдает к пример ijson.

    Если этого будет мало, попробуй переписать это место на c/c++, там еще быстрее парсеры, например simdjson обещает гигабайты в секунду (и это реально так)

    Эти парсеры пробегают линейно по токенам, а ты в процессе принимаешь решение нужно ли пропустить данный токен (или целый подраздел) или обрабатывать далее, благодаря такому подходу в оперативной памяти не сохраняется ничего из входного json а потоковый подход позволяет даже распаралелить обработку (в отдельном потоке/процессе ты анализируешь json а в другом пишешь в базу данных)
    Ответ написан
    Комментировать
  • Как узнать время выполнения работы функций и детализацию?

    @rPman
    Это называется профилирование, гуглить python profilers
    например cprofile
    https://habr.com/ru/companies/vk/articles/202832/
    Ответ написан
    Комментировать