Программа на Python для управления компьютером / PyAutoGui

Питон славиться наличием большого количества очень крутых библиотек. В статье мы рассмотрим работу с библиотекой PyAutoGui, которая позволяет манипулировать компьютером.
Первое что необходимо сделать — это установить всё необходимое. Нам потребуется установить Python с официального сайта , а также скачать IDE, можно использовать PyCharm и далее создать внутри него новый проект.
Установка библиотеки
Теперь необходимо выполнить установку всех библиотек. Если вы работаете на Windows, то вам повезло и все что нужно — команду pip install pyautogui.
Если же вы работаете на Mac OS, то лучше вначале выполнить установку pip install pyobjc, сразу же за ней выполнить установку pip install pyobjc-core и только потом выполнить установку pip install pyautogui.
Работа с библиотекой
Используя библиотеку вы можете работать с мышью: вводить ею, нажимать, перетаскивать и так далее, а также можете работать с клавиатурой: вводить текст, нажимать на клавиши, выполнять нажатие на связку команд.
Некоторые из команд представлены ниже вместе с описанием:
import pyautogui as pg # Получение позиции мыши и вывод в консоль print(pg.position()) # Передвижение мыши pg.move(50, 50, duration=0.5) pg.moveTo(150, 200, 0.5) # Передвигаем к точке относительно экрана # Нажатие мышкой по определенной точке pg.click(769, 101) pg.doubleclick(769, 101) # двойное нажатие pg.rightclick(769, 101) # нажатие правой кнопкной мыши pg.leftclick(769, 101) # нажатие левой кнопкной мыши # Ввод текста pg.typewrite("itproger.com") # Выполнения нажатия на клавишу pg.typewrite(["enter"]) # Выполнения нажатия на сочетание клавиш pg.hotkey("winleft") pg.hotkey("winleft", "up") pg.hotkey("ctrl", "t") # Вызов различных всплывающих окон pg.alert("Окно с информацией", "Название окна", button="Текст на кнопке") age = pg.prompt("Укажите возраст: ", "Название окна") print(age) pg.confirm("Вам больше 18?", "Название окна", ("Да, точно", "Нет")) pg.password("Введите пароль", "Название окна") # Создание скриншота pg.screenshot("yourPic.png") # Мини программа website = pg.prompt("Введите название сайта:", "Веб сайт", "https://") pg.click(769, 101) pg.typewrite(website) pg.typewrite(["enter"]) pg.screenshot("yourPic.png")
Видео на эту тему
Также вы можете просмотреть детальное видео по работе с библиотекой:
Дополнительный курс
На нашем сайте также есть углубленный курс по изучению языка Питон . В ходе огромной программы вы изучите не только язык Питон, но также научитесь создавать веб сайты за счёт веб технологий и фреймворка Джанго. За курс вы изучите массу нового и к концу программы будете уметь работать с языком Питон, создавать на нём полноценные ПК приложения на основе библиотеки Kivy, а также создавать веб сайты на основе библиотеки Джанго.
Больше интересных новостей

Что должен знать каждый разработчик Python: 8 основных технологий

Лучшие книги для изучения JavaScript в 2023 году: ТОП-5

ТОП 10: Подборка хобби для программиста

10 крутых примеров WebVR – дополненной реальности в браузере
Комментарии (1)
Крипи 22 октября 2022 в 09:41
Удаленная отладка кода Python в Linux
Visual Studio позволяет локально и удаленно запускать приложения Python на компьютере Windows и выполнять их отладку (см. статью Удаленная отладка). С помощью библиотеки debugpy можно также выполнять удаленную отладку, используя другую операционную систему, другое устройство или реализацию Python, отличную от CPython.
При работе c debugpy для отлаживаемого кода Python создается сервер отладки, к которому может подключаться Visual Studio. Для такого размещения нужно внести лишь небольшое изменение в код для импорта и запуска сервера и в некоторых случаях скорректировать на удаленном компьютере настройки сети и брандмауэра, чтобы разрешить подключения TCP.
Для Visual Studio 2019 версии 16.4 и более ранних версий использовалась библиотека ptvsd. В Visual Studio 2019 версии 16.5 библиотека ptvsd 4 заменена библиотекой debugpy.
Настройка компьютера Linux
Для выполнения данного пошагового руководства необходимо следующее:
- удаленный компьютер с Python на базе операционной системы, такой как Mac OSX или Linux;
- открытый порт 5678 (входящий трафик) в брандмауэре этого компьютера, который используется по умолчанию для удаленной отладки.
Это пошаговое руководство основано на Visual Studio 2019 версии 16.6.
Можно без труда создать виртуальную машину Linux в Azure и получить к ней доступ с помощью удаленного рабочего стола из Windows. Для виртуальной машины удобно использовать Ubuntu, так как Python устанавливается по умолчанию. В противном случае см. список в разделе Выбор и установка интерпретатора Python с перечнем дополнительных расположений скачиваемых файлов Python.
Дополнительные сведения о создании правила брандмауэра для виртуальной машины Azure см. в статье Открытие портов для виртуальной машины в Azure с помощью портала Azure.
Подготовка скрипта к отладке
- Создайте на удаленном компьютере файл Python guessing-game.py со следующим кодом:
import random guesses_made = 0 name = input('Hello! What is your name?\n') number = random.randint(1, 20) print('Well, , I am thinking of a number between 1 and 20.'.format(name)) while guesses_made < 6: guess = int(input('Take a guess: ')) guesses_made += 1 if guess < number: print('Your guess is too low.') if guess >number: print('Your guess is too high.') if guess == number: break if guess == number: print('Good job, ! You guessed my number in guesses!'.format(name, guesses_made)) else: print('Nope. The number I was thinking of was '.format(number))
Примечание. Рекомендуется записать устанавливаемую версию debugpy на случай необходимости устранения неполадок. Доступные версии также можно найти в списке debugpy.
import debugpy debugpy.listen(('0.0.0.0', 5678))
Помимо listen и wait_for_client , debugpy предоставляет вспомогательную функцию breakpoint , которая обрабатывается как программная точка останова, если присоединен отладчик. Существует также функция is_client_connected , которая возвращает значение True , если присоединен отладчик (но вы не обязаны проверять этот результат, прежде чем вызывать любые другие функции debugpy ).
Удаленное подключение с помощью инструментов Python
В следующем примере мы устанавливаем простую точку останова, чтобы прервать выполнение удаленного процесса.
- Скопируйте удаленный файл на локальный компьютер и откройте его в Visual Studio. Вы можете разместить этот файл в любом каталоге, но его имя должно совпадать с именем скрипта на удаленном компьютере.
- Чтобы технология IntelliSense для debugpy работала на локальном компьютере, установите пакет debugpy в среде Python (необязательно).
- Выберите Отладка>Присоединение к процессу.
- В открывшемся диалоговом окне Присоединение к процессу задайте для параметра Тип подключения значение Python remote (debugpy) (Удаленная отладка Python (debugpy)).
- В поле Цель подключения введите tcp://:5678 , где — IP-адрес удаленного компьютера (может быть явным адресом или именем, например myvm.cloudapp.net), а :5678 — номер порта удаленной отладки.
- Нажмите клавишу ВВОД, чтобы заполнить список доступных процессов debugpy на этом компьютере:
Если после заполнения этого списка вы запускаете другую программу на удаленном компьютере, нажмите кнопку Обновить. - Выберите процесс для отладки, а затем нажмите Присоединить, либо дважды щелкните процесс.
- Visual Studio переключается в режим отладки, а скрипт продолжает выполняться на удаленном компьютере, предоставляя все обычные возможности отладки. Например, установите точку останова в строке if guess < number: , затем переключитесь на удаленный компьютер и введите другую догадку. После этого Visual Studio на локальном компьютере останавливается в этой точке останова, показывает локальные переменные и т. д.

- При остановке отладки Visual Studio отключается от программы, которая продолжает выполняться на удаленном компьютере. Библиотека debugpy также продолжает прослушивать присоединение отладчиков, поэтому можно повторно присоединиться к процессу в любое время.
Устранение неполадок при подключении
- Убедитесь, что для параметра Тип подключения выбрано значение Python remote (debugpy) (Удаленная отладка Python (debugpy)).
- Убедитесь, что секрет в поле Цель подключения точно соответствует секрету в удаленном коде.
- Убедитесь, что IP-адрес в поле Цель подключения точно совпадает с IP-адресом удаленного компьютера.
- Убедитесь, что на удаленном компьютере открыт порт удаленной отладки, а в целевой объект соединения включен суффикс порта, такой как :5678 .
- Чтобы использовать другой порт, укажите его в listen , как в debugpy.listen((host, port)) . В этом случае откройте соответствующий порт в брандмауэре.
- Убедитесь, что установленная версия debugpy на удаленном компьютере, возвращенная pip3 list , соответствует используемой версии инструментов Python в Visual Studio в таблице ниже. При необходимости обновите debugpy на удаленном компьютере.
| Версия Visual Studio | Версия инструментов Python или debugpy |
|---|---|
| 2019 16.6 | 1.0.0b5 |
| 2019 16.5 | 1.0.0b1 |
В Visual Studio 2019 версий 16.0–16.4 использовалась ptvsd, а не debugpy. Процесс в этом пошаговом руководстве для этих версий аналогичен, но имена функций отличаются. В Visual Studio 2019 версии 16.5 используется debugpy, но имена функций совпадают с именами в ptvsd. Вместо listen используется enable_attach . Вместо wait_for_client используется wait_for_attach . Вместо breakpoint используется break_into_debugger .
Использование ptvsd версии 3.x для отладки в прежних версиях
Visual Studio 2017 версии 15.8 и более поздних версий использует отладчик на основе ptvsd версии 4.1 и более поздних. Visual Studio 2019 версии 16.5 и последующих версий использует отладчик на основе debugpy. Эти версии отладчика совместимы с Python 2.7, а также Python 3.5 и последующих версий. Если вы используете Python 2.6 и 3.1–3.4 или IronPython, Visual Studio отображает ошибку Debugger does not support this Python environment (Отладчик не поддерживает эту среду Python). Следующие сведения относятся только к удаленной отладке с помощью ptvsd версии 3.x.
- При использовании ptvsd 3.x функции enable_attach требуется передавать «секрет» в качестве первого аргумента, который ограничивает доступ к выполняющемуся скрипту. Этот секрет нужно ввести при присоединении удаленного отладчика. Хотя это не рекомендуется, можно разрешить подключаться любым пользователям с помощью enable_attach(secret=None) .
- Целевой URL-адрес подключения — tcp://@:5678 , где — это функция enable_attach , передаваемая в виде строки в коде Python.
По умолчанию подключение к серверу удаленной отладки ptvsd 3.x защищено только с помощью секрета, а все данные передаются в виде обычного текста. Для более безопасного соединения ptvsd 3.x поддерживает SSL с использованием протокола tcsp , который настраивается следующим образом.
-
На удаленном компьютере создайте отдельный самозаверяющий сертификат и файлы ключа, используя openssl:
openssl req -new -x509 -days 365 -nodes -out cert.cer -keyout cert.key
ptvsd.enable_attach(secret='my_secret', certfile='cert.cer', keyfile='cert.key')
То же изменение можно внести в файл кода на локальном компьютере, но так как этот код не выполнялся, делать это необязательно.
- Скопируйте файл сертификата с удаленного компьютера на локальный.
- Откройте панель управления и перейдите к компоненту Администрирование>Управление сертификатами компьютера.
- В открывшемся окне в левой части разверните узел Доверенные корневые центры сертификации, правой кнопкой мыши щелкните Сертификаты и выберите пункты Все задачи>Импорт.
- Найдите и выберите файл CER, скопированный с удаленного компьютера, а затем выполните действия, описанные в диалоговых окнах, чтобы завершить импорт.

- Если отображается предупреждение о том, что удаленный сертификат не является доверенным, это означает, что для доверенного корневого ЦС не был правильно добавлен сертификат. Проверьте эти действия и повторите попытку.

- Если выводится предупреждение о том, что имя удаленного сертификата не соответствует имени узла, это означает, что при создании сертификата использовалось неправильное имя узла или IP-адрес в качестве общего имени.

5 способов запустить Python скрипт не на локальной машине (для новичка)
Привет. Я не являюсь разработчиком и когда набросал простой скрипт для личных целей, задался вопросом: «Как запустить код не на своем компьютере?». Самые частые ответы в поисковике были про сервер и Docker. В результате забил гвоздь микроскопом. Почитать можно здесь.
Для специалистов с опытом статья наверное не имеет ценности, но новичкам надеюсь поможет сориентироваться и не потратить много часов на поиск информации и не совершать моих ошибок.
Варианты
Все ниже перечисленные способы подходят для несложного скрипта. Например, мой код для сборки статистики с группы VK, каждый час выполняет работу и завершается. Подробности тут.
Именно о запуске не сложных программ пойдет речь. Решения:
- Yandex Functions и пр.
Облачные решения
Простой скрипт и простое решение. Все необходимое есть и не нужно возиться с сервером.
Yandex Functions
Достаточно зарегистрироваться. Перейти в консоль, потратить время на документацию, перенести свой код и настроить таймеры. В функционал уже встроены логирование и мониторинг.
Что по деньгам? Бесплатно можно выполнять 1 000 000 раз в месяц. Что думаю более чем достаточно для небольших задач.
Существуют аналогичные заморские решения Amazon Lambda, Google Cloud Functions, Azure Functions. С учетом действующих ограничений не вижу смысла дополнительно тратить время на преодоления всех препятствий, когда результат принципиально не будет отличаться. Если есть желание разобраться оставлю ссылки на пример работы:
VPS сервер
Аренда сервера мне кажется избыточным решением для запуска одного простого скрипта. Это оправдано в случае если есть желание разобраться как взаимодействовать с сервером или в будущем будите разрабатывать более сложные проекты.
Для настройки связи вашего сервера с локальной машиной, вам нужно будет настроить SSH. Если вы часто планируете вносить изменения в код для переноса файлов рекомендую настроить Github это решение удобное и практичное.
- SSH с 1:05:23 до 1:08:25
- Github с 1:10:17 до 1:14:32
В качестве альтернативы Github можно установить себе FileZilla Client. GUI позволяет удобно перетаскивать необходимые файлы и папки. Так же можно копировать файлы используя только командную строку.
Python
Простой способ применить бесконечный цикл с задержкой времени непосредственно в скрипте. Пример на имитации часов.
import time while True: localtime = time.localtime() result = time.strftime("%I:%M:%S %p", localtime) print(result) time.sleep(1)
Второй способ сделать то же самое используя библиотеку schedule. Эта библиотека дает возможность более гибко настроить время исполнения кода. Например, ваш скрипт должен запускаться каждую субботу в 6 часов.
import schedule import time def job(): localtime = time.localtime() result = time.strftime("%I:%M:%S %p", localtime) print(result) schedule.every().sunday.at("06:00").do(job) while True: schedule.run_pending()
У зацикливания есть ощутимый минус если программа упадет, то самостоятельно в следующей период она не запуститься.
Crontab
Немного сложнее, чем цикл в самом коде. Вам придётся поработать с командой строкой и в самом файле сrontab прописать, когда и какой файл запускать. Если у вас произойдет ошибка, не связанная с вашим кодом, например, упадет внешний API сервиса к которому вы обращаетесь, то в следующий период запуска, когда API будет восстановлен ваш скрипт отработает. Минусом является очень слабое логирование, поэтому понять в каком конкретно месте падает скрипт достаточно сложно.
Systemd
Более трудозатратный способ по сравнению с crontab. Вам придётся потратить время на создание 2-х файлов. Плюсы гибкая настройка времени, условий выполнения и широкое логирование. Вы сможете увидеть ошибку с который упал код.
Docker
Избыточное решение для запуска простого скрипта, тем не менее им тоже можно воспользоваться. В первую очередь вы потратите много времени на установку docker и его настройку. Если у вас простой код, то решение с docker скорее всего не принесет дополнительной ценности кроме опыта работы.
Вывод
Надеюсь статья поможет новичкам и сэкономит их время. Оставляйте комментарии, если считаете, что существуют еще инструменты для запуска простых скриптов. Буду стараться дополнять статью опираясь на вашу обратную связь.
Python — перенос локального проекта на удаленный сервер
Admin
17.09.2020 , обновлено: 28.05.2022
Python, Ubuntu
Переносим приложение python с локального компьютера на свой удаленный сервер.
Этот материал из цикла статей по разработке сайтов на python: от локальной разработки до развертывания на удаленном сервере.
Перед этим должен быть создан локальный проект на python.
И только после этого можно приступать к переносу зависимостей и проекта на python на удаленный сервер.
У себя на компьютере
У себя на компьютере создаем файл, в котором находятся все зависимости необходимые для проекта:
pip freeze > requirements.txt
или выводим локальные зависимости и сохраняем их потом в том же файле:
pip freeze — local
Если какие-то модули были установлены в обход стандартной процедуры (pip install модуль), то такие модули в этом файле сейчас следует закомментировать и установить на сервере отдельно.
На сервере
Если директория для сайта еще не сделана, то заходим в папку пользователя:
cd / home / ploshadka
Здесь создаем новую директорию для проекта, например, по названию сайта:
mkdir ploshadka.net
cd ploshadka.net
Дальше закидываем локальные данные в гит и подтягиваем их у себя на сервере: инструкция по быстрой миграции через гит. Или переносим любым другим способом.
Затем в этой директории создаем виртуальное окружение:
python3 -m venv venv
Входим в виртуальное окружение:
source venv / bin / activate
Обязательно обновляем pip:
pip install —upgrade pip
Иначе есть вероятность получить при установке других модулей ошибки вроде:
… error
ERROR: Command errored out with exit status 1:
command:error: invalid command ‘bdist_wheel’
—————————————-
ERROR: Failed building wheel
Устанавливаем необходимые зависимости:
pip install -r requirements.txt
Выше в статье было упоминание, что некоторые модули может потребоваться установить дополнительно вручную. Сделайте это для этих модулей теми командами, которыми вы их раньше устанавливали.
pip install -i https:// test . pypi . org /simple/ —extra-index-url = https://pypi. org /simple/ модуль
Выходим из окружения:
deactivate
Конфиги
Переносим или создаем файл конфигов для сервера
Для сервера должен быть свой файл конфига, в котором используются переменные окружения, пароль для подключения к БД и т.д.
У меня это файл configs/private/main.py. Его надо перенести на сервер и расскоментировать строки предназначенные для сервера, а для локалки закомментировать.
В целом различия будут здесь:
# Set environment
os.environ [ ‘SERVER_ENV’ ] = ‘prod’
А для подключения к БД изменить пароль:
SQLALCHEMY_DATABASE_URI = ‘postgresql://ploshadka:пароль@localhost/ploshadka’
Значение pbkdf2_sha512 для SECURITY_PASSWORD_HASH не трогать!
SECRET_KEY и SECURITY_PASSWORD_SALT — если будем экспортировать БД с локалки для последующего импорта на прод, то эти значения такие же как и для локалки.
Дополнительная настройка на сервере
PostgreSQL
Статья про настройку PostgreSQL.
Если пользователь для БД уже был создан раннее, то создаем только новую БД:
Заходим в postgres:
sudo -u postgres psql
Вводим пароль от пользователя Linux.
Для русской версии лучше БД создать так:
CREATE DATABASE ploshadka TEMPLATE=template0 ENCODING ‘UTF-8’ LC_COLLATE ‘ru_RU.UTF-8’ LC_CTYPE ‘ru_RU.UTF-8’;
Назначаем привелегии новой таблице:
GRANT ALL PRIVILEGES ON DATABASE ploshadka TO ploshadka;
Также можно было создать БД так (но для ру лучше делать как выше)
createdb ploshadka —owner ploshadka
Выходим из postgres окружения:
Обновляем БД
В SQLAlchemy нам потребуется только одна команда обновления БД. Т.к. все коммиты мы отправляем только на локалке, а затем это закидываем в git.
Заходим в окружение python:
source venv / bin / activate
flask db upgrade
Запускаем сайт
Для запуска нового сайта руководствуемся инструкцией настройка сервера под Flask на Ubuntu из раздела:
«5. Настраиваем службу systemd».
Сертификат для нового домена
Остальное
Если что-то осталось для переноски сайта, то руководствоваться прочитав оставшиеся разделы из основной статьи «Python и Flask: от локальной разработки до серверной раскатки».
Читайте также
У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.