TGViewer
Python Заметки Python Заметки @pythonotes · 2.2K subscribers
Post #183 1.4K
Python + bash
Если вам часто требуется запускать shell команды из Python-кода, какой способ вы используете?
Самый низкоуровневый это функция os.system(), либо os.popen(). Рекомендованный способ это subprocess.call(). Но это всё еще достаточно неудобно.

Советую обратить своё внимание на очень крутую библиотеку sh.

Что она умеет?

🔸 удобный синтаксис вызова команд как функций

# os
import os
os.system("tar cvf demo.tar ~/")

# subprocess
import subprocess
subprocess.call(['tar', 'cvf', 'demo.tar', '~/'])

# sh
import sh
sh.tar('cvf', 'demo.tar', "~/")

🔸 простое создание функции-алиаса для длинной команды

fn = sh.lsof.bake('-i', '-P', '-n')
output = sh.grep(fn(), 'LISTEN')

в этом примере также задействован пайпинг

🔸 удобный вызов команд от sudo

with sh.contrib.sudo:
print(ls("/root"))

Такой запрос спросит пароль. Чтобы это работало нужно соответствующим способом настроить юзера.
А вот вариант с вводом пароля через код.

password = "secret"
sudo = sh.sudo.bake("-S", _in=password+"\n")
print(sudo.ls("/root"))

Это не все фишки. Больше интересных примеров смотрите в документации.

Специально для Windows💀 юзеров

#libs #linux
GitHub GitHub - amoffat/sh: Python process launching Python process launching. Contribute to amoffat/sh development by creating an account on GitHub.
More from @pythonotes
  1. Sep 21, 2026­ WebAssembly это мощная технология позволяющая загружать практически любое приложение в б…
  2. Aug 17, 2026Не так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без п…
  3. Jul 20, 2026У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Соби…
  4. Jul 13, 2026В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно под…
  5. Jul 6, 2026Модуль pwd может использоваться для считывания информации о пользователях из базы данных п…
  6. Jun 22, 2026Недавно я реализовал Multi Tenancy систему на FastAPI + SQLAlchemy и пересобрал её в небол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →