Найти в Дзене

Депортация Windows или как я подружил Python с Linux через "не хочу"

Привет, мой юный хакер! Если ты читаешь этот текст, значит, в твоей жизни произошло одно из двух: либо ты решил стать «крутым айтишником», либо твой старый ноутбук просто отказался тянуть Windows с её вечными обновлениями. Поздравляю, ты столкнулся с внедрением Linux в твою жизнь. Это как ипотека: сначала ты не понимаешь, зачем оно тебе, а потом просыпаешься и правишь конфиги в Vim’е в три часа ночи с криком «Почему не ставится этот драйвер?!». И вот ты здесь. Сидишь в терминале. Черный экран, зеленая строка приглашения. Страшно? Еще бы! В Windows ты просто два раза кликал по ярлычку, и программа запускалась. А тут нужно что-то вводить руками. Средневековье какое-то. Но самое веселье начинается, когда ты пытаешься заставить Python запускать другие программы в этом мире терминалов и перфокарт. В мире Python у тебя есть несколько способов выстрелить себе в ногу. Самый простой и «дедовский» — это позвать на помощь модуль os. import os
os.system('firefox https://дотяв.рф') Казалось бы, чт
Оглавление

Привет, мой юный хакер! Если ты читаешь этот текст, значит, в твоей жизни произошло одно из двух: либо ты решил стать «крутым айтишником», либо твой старый ноутбук просто отказался тянуть Windows с её вечными обновлениями. Поздравляю, ты столкнулся с внедрением Linux в твою жизнь. Это как ипотека: сначала ты не понимаешь, зачем оно тебе, а потом просыпаешься и правишь конфиги в Vim’е в три часа ночи с криком «Почему не ставится этот драйвер?!».

И вот ты здесь. Сидишь в терминале. Черный экран, зеленая строка приглашения. Страшно? Еще бы! В Windows ты просто два раза кликал по ярлычку, и программа запускалась. А тут нужно что-то вводить руками. Средневековье какое-то.

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

Почему просто «нажать два раза» — это для слабых?

В мире Python у тебя есть несколько способов выстрелить себе в ногу. Самый простой и «дедовский» — это позвать на помощь модуль os.

import os
os.system('firefox https://дотяв.рф')

Казалось бы, что может пойти не так? Запустился браузер, все летает. Но хитрые линуксоиды говорят, что это «небезопасно» и «не модно». Они постоянно придумывают какие-то страшные слова: «шелл-инъекции», «субпроцессы». Короче, если ты напишешь такой код в присутствии сеньора, он вырвет тебе провод от мышки.

Тяжелая артиллерия: Модуль Subprocess

Встречайте, герой нашего времени — модуль subprocess. Это как швейцарский нож, только если швейцарский нож умеет запускать ядерный реактор. Он пришел на смену старому дедушке os, и теперь это стандарт.

Давай попробуем что-то простое. Например, запустим игру «Сапёр», которую ты честно скачал с торрентов в 2007 году.

import subprocess
subprocess.run(["nautilus", "/home/vasya/Downloads/Saper_2007_crack"])

Что мы видим? Если папка существует, откроется файловый менеджер. Если нет — Python молча обидится и выдаст ошибку. Никаких тебе анимаций загрузки, как в Windows. Только суровый Linux-логи.

А хочешь прикол? Чтобы твой скрипт работал как надо, нужно писать аргументы не строкой, а списком! ["ls", "-la"], а не "ls -la". Почему? Потому что Линус Торвальдс так захотел. Спорить бесполезно.

Как захватить вывод программы и не сойти с ума?

Допустим, ты написал супер-программу, которая должна пинговать сервера твоего бывшего одноклассника, который сказал, что «питон — это не настоящий язык». И тебе нужно увидеть результат его позора.

Тут мы добавляем магический параметр:

import subprocess

result = subprocess.run(["ping", "-c", "2", "google.com"],
capture_output=True,
text=True)

if result.returncode == 0:
print("Все ок, интернет есть, можно сидеть в Дзене дальше.")
print("А вот и результат пинга:")
print(result.stdout)
else:
print("Интернета нет. Иди читать книгу.")

Видишь? capture_output=True ловит вывод, как сачок бабочку, а text=True превращает эти страшные байты в понятный человеческий язык. Красота!

Запускаем Python из Python (Inception)

А теперь — высший пилотаж. Запустить Python из Python. Зачем? Ну, например, чтобы удивить друзей или создать нейросеть, которая будет писать сама за тебя диплом.

import subprocess
subprocess.run(["python3", "-c", "print('Привет из дочернего процесса! Я внедрился!')"])
print("А это снова родительский процесс. Добро пожаловать домой, сынок.")

Это как смотреть сон внутри сна. Леонардо ДиКаприо отдыхает.

Внедрение в автозагрузку (чтобы жить стало веселее)

И вот ты написал свой гениальный скрипт, который каждое утро включает тебе любимую музыку или открывает Дзен с котиками. Но как сделать, чтобы он запускался сам при включении компа? Ведь ты не хочешь каждое утро лезть в терминал (ты же еще кофе не выпил, какие терминалы).

Тут на помощь приходит Cron. Это такой древний демон, который будит твой компьютер по ночам. Шучу. Это планировщик задач.

Пишешь в терминале:

crontab -e

А потом добавляешь туда страшную строчку:

@reboot /usr/bin/python3 /home/vasya/my_cool_script.py

И всё! Теперь при каждой загрузке Linux будет радостно запускать твой код. Если что-то пойдет не так, система просто упадет, и ты будешь выглядеть как настоящий хакер, копаясь в логах.

Итог

Запускать программы из Python в Linux — это как езда на велосипеде с квадратными колесами. Сначала неудобно, больно и хочется все бросить. Но потом ты понимаешь, что эти квадратные колеса не спускают и едут по любой поверхности (особенно по граблям).

Главное — не бояться терминала, читать ошибки (да, там правда написано, что делать, а не просто "0x0000005d") и помнить: если твоя программа случайно не запустила Firefox, а удалила ядро системы — ну что ж, welcome to Linux, переустановка лечит всё.

Внедряйтесь с умом!