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
⁉️ ¿CÓMO FUE LA NEGOCIACIÓN CON #BANFIELD POR RODRIGO AUZMENDI?
1) A mitad de semana, desde el club, llamaron al Presidente de Banfield e inicialmente pidió U$S 2.5M por el 80% del pase.
2) El Xeneize envío una oferta formal de U$S 1.5M por el 100% del pase.
3) Banfield respondió que quería U$S 2M por el 80%.
4) Boca desistió de la negociación porque entendió que la oferta que había hecho estaba bien ya que es un jugador de 25 años, que hace 6 meses jugaba en Honduras, que hizo 4 goles en Banfield, que ni siquiera es titular indiscutido y que lo habían comprado por 21 mil dólares.
Guía Banfield de anestesia y manejo del dolor
https://drive.google.com/file/d/10d3VuPeIyn0djVq7n6z_jsnxACy9lv7C/view?usp=drivesdk
#Banfield
#Anestesiologia
Gastrología, nefrología y urgencias
Gracias a la doc Blanca Serrano por el aporte 🤓
https://drive.google.com/file/d/1Vvw1jZP7FfBs0FrFh4whXuLktZ7kz9Jr/view?usp=drivesdk
#Unam
#Gastroenterologia
#Urologia
#medicinadeemergencias
#Banfield
Argentina Liga Profesional Argentina🇦🇷
2026-04-06 22:00 UTC
Argentinos JRS vs. Banfield
Predicted outcome: Argentinos JRS✅
Predicted score: 2:0
Actual: Argentinos JRS 3:2
#ArgentinosJRS#Banfield
2026-04-07 00:15 UTC
Instituto Cordoba vs. Defensa Y Justicia
Predicted outcome: Defensa Y Justicia❌
Predicted score: 1:2
Actual: Instituto Cordoba 2:0
#InstitutoCordoba#DefensaYJusticia
#Football#ArgentinaLigaProfesional
🚨💣 RODRIGO #AUZMENDI MUY CERCA DE LLEGAR A #BOCA
⚠️ Están cerca de llegar a un acuerdo con #Banfield.
👉 En su último año jugó 18 partidos en el #Moatagua🇭🇳 hizo 14 goles, y en el "Taladro" 15 partidos y 4 goles.
✅📝 Con el jugador esta todo acordado.
#BocaJuniors🟦🟨🟦
(Universo Boca Juniors)
Argentina Liga Profesional Argentina🇦🇷
2026-04-20 18:00 UTC
Barracas Central vs. Belgrano Cordoba
Predicted outcome: Draw✅
Predicted score: 1:1
Actual: Draw 0:0
#BarracasCentral#BelgranoCordoba
2026-04-20 20:15 UTC
Banfield vs. Independ. Rivadavia
Predicted outcome: Independ. Rivadavia❌
Predicted score: 1:2
Actual: Draw 0:0
#Banfield#IndependienteRivadavia
2026-04-20 20:15 UTC
Central Cordoba de Santiago vs. Platense
Predicted outcome: Draw❌
Predicted score: 1:1
Actual: Central Cordoba de Santiago 4:3
#CentralCordobadeSantiago#Platense
2026-04-20 22:30 UTC
San Lorenzo vs. Velez Sarsfield
Predicted outcome: Draw✅
Predicted score: 1:1
Actual: Draw 0:0
#SanLorenzo#VelezSarsfield
2026-04-21 00:45 UTC
Tigre vs. Huracan
Predicted outcome: Draw✅
Predicted score: 1:1
Actual: Draw 1:1
#Tigre#Huracan
2026-04-21 00:45 UTC
Gimnasia M. vs. Lanus
Predicted outcome: Lanus❌
Predicted score: 1:2
Actual: Gimnasia M. 1:0
#GimnasiaM#Lanus
#Football#ArgentinaLigaProfesional