Как скинуть другу программу на python

Язык программирования Python

Следующий код устанавливает соединение клиент-сервер между двумя программами Python с помощью стандартного модуля socket и отправляет файл с клиента на сервер.

Логика передачи файлов содержится в двух функциях: клиент определяет функцию send_file() для отправки файла через сокет и, наоборот, сервер определяет функцию receive_file() для его получения.

Таким образом, вы сможете легко перенести функции из этой статьи в другие программы, которые уже реализуют соединение клиент-сервер.

Код подготовлен для отправки файлов любого формата и любого размера. Требуется Python 3.8 или выше.

Сервер:

# server.py import socket import struct def receive_file_size(sck: socket.socket): # Эта функция обеспечивает получение байтов, # указывающих на размер отправляемого файла, # который кодируется клиентом с помощью # struct.pack(), функции, которая генерирует # последовательность байтов, представляющих размер файла. fmt = » expected_bytes = struct.calcsize(fmt) received_bytes = 0 stream = bytes() while received_bytes < expected_bytes: chunk = sck.recv(expected_bytes — received_bytes) stream += chunk received_bytes += len(chunk) filesize = struct.unpack(fmt, stream)[0] return filesize def receive_file(sck: socket.socket, filename): # Сначала считываем из сокета количество # байтов, которые будут получены из файла.

filesize = receive_file_size(sck) # Открываем новый файл для сохранения # полученных данных. with open(filename, «wb») as f: received_bytes = 0 # Получаем данные из файла блоками по # 1024 байта до объема # общего количество байт, сообщенных клиентом.

ВИРУС ДЛЯ ДРУГА | КАК СОЗДАТЬ ВИРУС ТУТОРИАЛ

while received_bytes < filesize: chunk = sck.recv(1024) if chunk: f.write(chunk) received_bytes += len(chunk) with socket.create_server((«localhost», 6190)) as server: print(«Ожидание клиента. «) conn, address = server.accept() print(f»: подключен.») print(«Получаем файл. «) receive_file(conn, «image-received.png») print(«Файл получен.») print(«Соединение закрыто.»)Code language: PHP (php)

Клиент

# client.py import os import socket import struct def send_file(sck: socket.socket, filename): # Получение размера файла. filesize = os.path.getsize(filename) # В первую очередь сообщим серверу, # сколько байт будет отправлено. sck.sendall(struct.pack(«, filesize)) # Отправка файла блоками по 1024 байта. with open(filename, «rb») as f: while read_bytes := f.read(1024): sck.sendall(read_bytes) with socket.create_connection((«localhost», 6190)) as conn: print(«Подключение к серверу.») print(«Передача файла. «) send_file(conn, «image.png») print(«Отправлено.») print(«Соединение закрыто.»)Code language: PHP (php)

Чтобы протестировать код, вы должны изменить вызовы send_file() и receive_file(), указав путь к файлу, который вы хотите отправить, и путь к файлу, в котором вы хотите его получить.

ВИРУС ДЛЯ ДРУГА | КАК СОЗДАТЬ ВИРУС ДЛЯ ДРУГА

В текущем коде это файл image.png, который находится в той же папке, что и два файла Python, и принимается как image-received.png.

После этого запустите сервер:

python server.pyCode language: CSS (css)

Затем, на другом терминале, клиент:

python client.pyCode language: CSS (css)

Вывод сервера будет выглядеть следующим образом:

Ожидание клиента. 127.0.0.1:60331 подключен. Получаем файл. Файл получен. Соединение закрыто.

Code language: CSS (css)

Что касается клиента:

Читайте также:
Программа которая считает длину линии

Подключение к серверу. Передача файла. Отправлено. Соединение закрыто.

Источник: dvsemenov.ru

Как скинуть другу программу на python

Бот на Python с ChatGPT: Докеризация и деплой на VPS [Гайд]

Бот на Python с ChatGPT: Докеризация и деплой на VPS [Гайд]

02 апреля 2023
Оценки статьи
Еще никто не оценил статью

В данной статье мы научимся упаковывать нашего бота с ChatGPT на основе aiogram с помощью Docker-контейнера и запустим его на виртуальном сервере в интернете, чтобы он был доступен для использования 24/7 из любой точки мира.

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

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

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

Все откликнувшиеся на зов помощи будут упомянуты после выполнения целей

Статьи, которые вам необходимы перед изучением этой:

  1. Бот на Python, использующий ChatGPT для Telegram
  2. Установка Docker на Ubuntu 22.04
  3. Установка Docker Compose v2 на Ubuntu 22.04
  4. Версия бота с запоминаем контекста общения (Необязательно).

Напоминаю, что мы имеем следующий код бота chatGPT на aiogram (python)

Конфигурация Dockerfile для запуска бота на aiogram с нейросетью

Рядом с файлом main.py создаем файл Dockerfile, где мы будем билдить контейнер с Python для запуска проекта со следующим содержимым:

Dockerfile

FROM python:alpine ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 # Установим директорию для работы WORKDIR /telegram_bot COPY ./requirements.txt ./ # Устанавливаем зависимости и gunicorn RUN pip install —upgrade pip RUN pip install —no-cache-dir -r ./requirements.txt # Копируем файлы и билд COPY ./ ./ RUN chmod -R 777 ./

Эта конфигурация относится к созданию Docker-контейнера на основе образа Python Alpine, который используется для развертывания Python-приложения, в данном случае, телеграм-бота.

В первой строке указывается базовый образ python:alpine , который используется для создания контейнера. Alpine — это минималистичный дистрибутив Linux, который предлагает меньший размер и более быстрое время запуска контейнеров.

Далее, в строках ENV PYTHONUNBUFFERED=1 и ENV PYTHONDONTWRITEBYTECODE=1 определяются переменные среды. PYTHONUNBUFFERED устанавливает флаг для Python, чтобы он выводил данные в стандартный поток вывода без буферизации, а PYTHONDONTWRITEBYTECODE отключает создание .pyc-файлов, чтобы избежать проблем с обновлением кода в контейнере.

В строке WORKDIR /telegram_bot устанавливается рабочая директория в контейнере, куда будут копироваться все файлы проекта.

Далее, в строках COPY ./requirements.txt ./ и RUN pip install —no-cache-dir -r ./requirements.txt устанавливаются зависимости проекта. Сначала копируется файл requirements.txt в текущую директорию в контейнере, а затем запускается команда pip install , чтобы установить все зависимости проекта.

В строке COPY ./ ./ копируются все файлы проекта в рабочую директорию в контейнере.

Наконец, в строке RUN chmod -R 777 ./ устанавливается разрешение на чтение, запись и выполнение для всех файлов в рабочей директории проекта в контейнере. Это делается для того, чтобы приложение внутри контейнера имело необходимые права для чтения и записи в файлы.

Читайте также:
Лучшая программа для топосъемки

В итоге, данная конфигурация создает Docker-контейнер, в котором установлены все необходимые зависимости для работы телеграм-бота на основе нейросети ChatGPT и задана правильная рабочая директория для запуска приложения.

Конфигурация docker-compose для запуска бота на aiogram с нейросетью

Далее нам необходимо сконфигурировать файл запуска нашего бота с нейросетью, для этого рядом с файлами Dockerfile и main.py создаем файл docker-compose.yml со следующим содержимым:

docker-compose.yml

version: «3.9» services: telegram-bot: container_name: telegram-bot working_dir: /telegram_bot restart: always build: context: . dockerfile: Dockerfile command: sh -c «python main.py»

Этот код описывает файл docker-compose.yml, который является инструментом для определения и запуска нескольких связанных контейнеров Docker в одном и том же процессе.

Строка version: «3.9» указывает на версию Docker Compose, которая используется для создания и управления контейнерами.

Блок services определяет сервисы, которые будут запущены в контейнерах Docker, в нашем случае, сервис с именем telegram-bot определяется в блоке services .

Строка container_name: telegram-bot задает имя контейнера Docker.

Строка working_dir: /telegram_bot устанавливает рабочую директорию в контейнере.

Строка restart: always задает автоматический перезапуск контейнера в случае его остановки.

Строка build указывает, что контейнер должен быть построен с использованием Dockerfile, находящегося в текущей директории.

Строка context: . указывает на текущую директорию как контекст для сборки.

Строка dockerfile: Dockerfile указывает на имя файла Dockerfile, который будет использоваться для сборки контейнера.

Строка command: sh -c «python main.py» указывает, что при запуске контейнера будет выполнен скрипт main.py с помощью Python, который находится в текущей директории. Команда sh -c используется для запуска нескольких команд в одном процессе shell.

Создание файла requirements.txt для зависимостей

И создадим ещё один файл зависимостей, находясь в нашем виртуальном окружении. Этот файл загрузит в наш билд необходимые библиотеки для работы бота. Для его создания в терминале нашего проекта с ботом введите следующую команду: pip freeze > requirements.txt

В нашем случае получится следующий файл, у вас могут быть версии поновее:

requirements.txt

aiogram==2.25.1 aiohttp==3.8.3 aiosignal==1.3.1 async-timeout==4.0.2 attrs==22.2.0 Babel==2.9.1 certifi==2022.12.7 charset-normalizer==2.1.1 colorama==0.4.6 frozenlist==1.3.3 idna==3.4 magic-filter==1.0.9 multidict==6.0.4 openai==0.26.4 pyTelegramBotAPI==4.10.0 pytz==2022.7.1 requests==2.28.2 tqdm==4.64.1 urllib3==1.26.14 yarl==1.8.2

Копируем telegram бота с ChatGPT на VPS

Далее нам необходимо скопировать эти 3 файла в директорию на виртуальном сервере. Я уже приобрел такой сервер, обычно я беру сервера на timeweb.

Установленная ОС: Ubuntu 22.04.

Чтобы скинуть файлы на сервер, нам необходим клиент для подключения по SSH, например FileZilla или WinSCP.

Я буду использовать FileZilla:

Вводим данные от сервера и подключаемся

Обычно я все файлы выкладываю в папку /home/ на сервере. Сюда я их и скопирую, предварительно создав папку telegram_bot.

Создаю папку telegram_bot Копирую файлы в папку telegram_bot Скопированные файлы проекта

Далее перейдем к запуску. Мы должны будем подключиться через терминал по SSH протоколу на наш сервер.

Запускаем telegram бота с ChatGPT на VPS

Далее вам необходимо установить Docker на вашу ОС.

В начале статьи я уже оставил нужные уроки, по которым вам необходимо поставить Docker и Docker Compose. Ставятся они очень быстро без каких либо проблем.

  1. Установка Docker на Ubuntu 22.04
  2. Установка Docker Compose v2 на Ubuntu 22.04

Находимся в папке проекта

Далее нам остается лишь последнее, сбилдить проект и запустить его, вводим следующую команду для установки нашего билда с ботом: docker compose build

Читайте также:
Мультиварка редмонд 34 программы инструкция

Процесс создания контейнера

После окончания прогресса создания билда, мы запускаем его с помощью следующей команды: docker compose up

Контейнер запускается с нашим ботом

Проверка работы telegram-бота на aiogram с ChatGPT в Docker контейнере на VPS

Теперь я напишу своему боту что-нибудь:

Бот отвечает нам, находясь на VPS сервере и работя из Docker контейнера

На этом всё. Мы быстро развернули проект пошагово в Docker контейнере и проверили его работу. Как видите, я специально вывел функцию print() моих сообщений боту, чтобы наглядно вам показать работу с ботом на сервере.

Меню категорий

    Загрузка категорий.

Источник: proghunter.ru

Как использовать Python для работы с кроссплатформенными приложениями

Изучите, как использовать Python для создания кроссплатформенных приложений с помощью популярных инструментов и библиотек.

Python programming language being used for cross-platform applications.

Алексей Кодов
Автор статьи
23 июня 2023 в 18:56

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

Кроссплатформенные приложения и Python

Кроссплатформенное приложение — это программное обеспечение, которое работает на нескольких платформах, таких как Windows, macOS, Linux, Android и iOS. Создание кроссплатформенных приложений позволяет сократить время и стоимость разработки, а также упрощает поддержку и обновление продукта.

Python поддерживает разработку кроссплатформенных приложений благодаря своей гибкости и множеству доступных библиотек и инструментов. Вот несколько примеров инструментов и библиотек, которые могут быть полезными при создании кроссплатформенных приложений на Python:

Kivy

Kivy — это открытый фреймворк для разработки кроссплатформенных приложений на Python. Он позволяет создавать приложения с единой кодовой базой, которые могут работать на Windows, macOS, Linux, Android и iOS.

Пример создания простого окна с кнопкой с использованием Kivy:

import kivy from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): return Button(text=’Hello, World!’) if __name__ == ‘__main__’: TestApp().run()

PyQt

PyQt — это набор Python-биндингов для кроссплатформенного фреймворка Qt. Он позволяет создавать кроссплатформенные приложения с графическим интерфейсом для Windows, macOS и Linux.

Пример создания простого окна с кнопкой с использованием PyQt:

import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton def button_clicked(): print(«Hello, World!») app = QApplication(sys.argv) window = QWidget() window.setWindowTitle(‘Sample Window’) button = QPushButton(‘Hello, World!’, window) button.clicked.connect(button_clicked) button.resize(button.sizeHint()) button.move(50, 50) window.setGeometry(300, 300, 200, 150) window.show() sys.exit(app.exec_())
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

PyGObject

PyGObject — это набор Python-биндингов для библиотеки GObject, которая является основой для создания кроссплатформенных приложений на GTK+ для Windows, macOS и Linux.

Пример создания простого окна с кнопкой с использованием PyGObject:

import gi gi.require_version(‘Gtk’, ‘3.0’) from gi.repository import Gtk class HelloWorld(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title=»Hello World») button = Gtk.Button(label=»Click me») button.connect(«clicked», self.on_button_clicked) self.add(button) def on_button_clicked(self, widget): print(«Hello, World!») win = HelloWorld() win.connect(«destroy», Gtk.main_quit) win.show_all() Gtk.main()

Заключение

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

Удачи вам в изучении Python и создании кроссплатформенных приложений!

Источник: sky.pro

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru