Задать вопрос
Увлекаюсь программированием на Python в области хакинга и любительской обратной инженерии.
Админ-любитель. Ежедневный пользователь Arch Linux.
Контакты
Местоположение
Украина, Луганская обл., Луганск

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (71)

Лучшие ответы пользователя

Все ответы (172)
  • Как сделать автозапуск python программы с виртуальным окружением в фоновом режиме на линукс?

    drygdryg
    @drygdryg
    Python-разработчик
    Можно использовать систему инициализации Systemd. Напишите unit-файл такого вида:
    [Unit]
    Description=My Script Service
    After=multi-user.target
    
    [Service]
    User=user  # Имя пользователя, от имени которого будет запускаться команда, указанная в ExecStart
    WorkingDirectory=/home/user/program  # Директория, в которую будет осуществлён переход перед запуском
    ExecStart=/home/user/program/venv/bin/python /home/user/program/webui.py
    Restart=always  # Всегда перезапускать скрипт при его падениях
    
    [Install]
    WantedBy=multi-user.target

    и сохраните его в директории /etc/systemd/system с расширением .service, например, /etc/systemd/system/my_program.service.

    Здесь не используется скрипт activate для активации виртуального окружения, но вместо этого указывается полный путь к интерпретатору Python внутри этого виртуального окружения.
    Также важно указывать абсолютные пути к файлам и директориям, даже несмотря на то, что задана рабочая директория WorkingDirectory.
    Если ваш скрипт опирается на сетевые соединение, в секции Unit в качестве After задайте network-online.target вместо multi-user.target:
    After=network-online.target

    После этого перезагрузите конфигурацию Systemd:
    sudo systemctl daemon-reload
    И запустите сервис с добавлением в автозагрузку:
    sudo systemctl enable --now my_program.service
    Ответ написан
    2 комментария
  • Формирование документа по шаблону?

    drygdryg
    @drygdryg
    Python-разработчик
    Можно воспользоваться библиотекой python-docx для генерации документа.
    Ответ написан
    Комментировать
  • Как парсить посты телеграм с помощью pyrogram?

    drygdryg
    @drygdryg
    Python-разработчик
    Сначала требуется узнать ID целевого канала. Это можно сделать, используя сторонние клиенты Телеграма (Котатограм для ПК или Graph для Android, к примеру).
    Затем написать вот такой обработчик сообщений, который будет реагировать только на сообщения с канала, ID которого задан переменной CHANNEL_ID:
    from pyrogram import Client
    from pyrogram import types, filters
    
    
    CHANNEL_ID = -11012345678
    
    app = Client(
        "my_account",
        api_id=12345,
        api_hash="0123456789abcdef0123456789abcdef"
    )
    
    
    @app.on_message(filters=filters.channel)
    def my_handler(client: Client, message: types.Message):
        if message.chat.id != CHANNEL_ID:
            return
        print("Получено новое сообщение с ID", message.message_id)
        # Как-то обработать сообщение с канала, например, напечатать его текст
        print("Текст:", message.text)
    
    
    app.run()

    Здесь можно посмотреть описание объекта Message, чтобы работать с ним в дальнейшем: https://docs.pyrogram.org/api/types/Message#pyrogr...
    Также можно исключить события редактирования сообщений (получение отредактированных сообщений с канала), для этого нужно передать в декоратор следующие фильтры:
    @app.on_message(filters=filters.channel & ~filters.edited)
    Ответ написан
    5 комментариев
  • Как можно узнать типы данных которые может кушать класс?

    drygdryg
    @drygdryg
    Python-разработчик
    Вызвать функцию help в интерактивном режиме Python, передав ей класс или функцию:
    >>> help(set)
    Ещё для этого удобно использовать среду IPython, в которой можно отдельно получить сигнатуру класса/функции, исходный код, документацию:
    Python 3.10.5 (main, Aug  1 2022, 07:53:20) [GCC 12.1.0]
    Type 'copyright', 'credits' or 'license' for more information
    IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.
    
    In [1]: set?
    Init signature: set(self, /, *args, **kwargs)
    Docstring:     
    set() -> new empty set object
    set(iterable) -> new set object
    
    Build an unordered collection of unique elements.
    Type:           type
    Subclasses:     
    
    In [2]: %pdef set
    No definition header found for set
    
    In [3]: %pdoc set
    Class docstring:
        set() -> new empty set object
        set(iterable) -> new set object
        
        Build an unordered collection of unique elements.
    Init docstring:
        Initialize self.  See help(type(self)) for accurate signature.
    
    In [4]: %psource set
    No source found for set
    Ответ написан
    2 комментария
  • Как найти слово в строке по критериям?

    drygdryg
    @drygdryg
    Python-разработчик
    Используйте регулярные выражения:
    import re
    s = "новая версия вчера - version1"
    r = re.search(r'[a-zA-Z]{7}\d', s)
    print(r.group())

    https://regex101.com/r/tQELMd/1
    Ответ написан
    3 комментария

Лучшие вопросы пользователя

Все вопросы (2)