Ответы пользователя по тегу Python
  • Работа с txt в python. Как работать с редактированием строк?

    @rPman
    Используй утилиту cut, она идеально подходит для решения твоей задачи
    cut --delimiter=; --fields=1 input_file.csv
    Результат будет выведен в консоль, можно перенаправить в фай, добавив в конец строки
    > out_file.txt
    Ответ написан
    Комментировать
  • Есть ли у биржи DeDust API для python?

    @rPman
    у них же на github есть что то
    https://github.com/dedust-io/sdk
    https://docs.dedust.io/reference/getting-available...

    p.s. сам этим не пользовался
    Ответ написан
    3 комментария
  • Как сделать стабильный загрузчик видео?

    @rPman
    yt-dlp

    И бодаться с гугловскими системами противодействия автоматизаций.

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

    p.s. почти наверняка есть официально платные услуги по доступу к данным, но наверное задорого и не доступно публично. Компания не зря тратила годами сотни миллионов баксов убытков чтобы стать монополистом по хранению и доступу к видеоконтенту, а на фоне последних веяний 'данные - новое золото' с целью обучения ИИ, отдавать данные просто так гугл точно не будет.
    Ответ написан
    4 комментария
  • Как узнать, был ли изменен файл?

    @rPman
    два направления:
    * первый периодические опросы 'времени последнего изменения' с помощью os.path.getctime(path), если время изменилось - значит файл был изменен (речь о командах на запись но содержимое не проверяется).
    Достоинства - простота, высокая скорость, если количество отслеживаемых файлов мало (до сотни).
    Недостаток - низкая оперативность изменений, определяется интервалом опроса

    * второй, подписаться на события изменений файла в файловой системе средствами ОС, они отличаются в каждой свои (например для linux гугли библиотеки python inotify). Можно вместо своей реализации использовать готовые утилиты (в linux inotify/inoticoming/incron/...)
    Достоинства - высокая оперативность и скорость реакции на изменения, можно отслеживать изменения в огромном количестве файлов, очень подробная информация о действиях (например можно получить события о том что файл кем то был открыт и его читают)
    Недостатки - сложность реализации, зависимость реализации от операционной системы.

    p.s. Внимание, в зависимости от выбранного метода и операционной системы возможны неожиданные последствия попыток отслеживания файлов по символическим и жестким ссылкам (можно пропускать события изменений, вопрос не изучал но нужны тесты)
    Ответ написан
    Комментировать
  • Как открывать браузер у конкретного пользователя?

    @rPman
    ты пишешь телеграм бот и хочешь чтобы браузер у пользователя открывался по твоему желанию?
    никак, иначе это была бы дыра приватности (вычислить ip клиента) и для фишинга
    Ответ написан
  • Как парсить курсы валют с биржи dedust?

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

    Могу предположить что цены там тупо берутся тут https://api.dedust.io/v2/prices (этот запрос раз в 3 секунды идет со страницы)
    Ответ написан
    2 комментария
  • Почему появляется ошибка 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 комментарий