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
#Italia🇮🇹
#Regionali
#Marche
❓Come si vota nelle Marche?
Come nelle altre Regioni a statuto ordinario, i cittadini eleggono sia il Presidente della Giunta regionale, sia i membri del Consiglio regionale.
È proclamato Presidente il candidato che ottiene il maggior numero di voti validi.
I seggi del Consiglio regionale sono ripartiti in 5 circoscrizioni elettorali, corrispondenti alle Province (tra parentesi è indicato il numero di consiglieri spettanti a ciascuna):
- Ancona (9);
- Ascoli Piceno (4);
- Fermo (4);
- Macerata (6);
- Pesaro-Urbino (7).
In totale sono previsti 30 seggi, a cui si aggiunge quello riservato al Presidente della Giunta regionale.
L’assegnazione dei seggi avviene con metodo D’Hondt. Al candidato eletto Presidente spettano 18 o 19 seggi del Consiglio, da suddividere proporzionalmente tra le liste che lo hanno sostenuto. I seggi restanti vengono attribuiti alle altre liste.
Per le liste singole non è prevista alcuna soglia di sbarramento. Per le coalizioni, invece, la soglia è alternativa:
- del 5% dei voti validamente espressi;
- se la coalizione non raggiunge il 5%, è sufficiente che una lista al suo interno ottenga il 3%.
@TuttoElezioni
🇳🇱 La marche commémorative Régiment immortel a eu lieu à Amsterdam, rassemblant des dizaines de personnes venues de tous les coins des Pays-Bas, rapporte la correspondante de TASS.
#paysbas#marche
#Italia#Marche
Il sindaco di Civitanova Marche Fabrizio Ciarapica lascia #FI|EPP e aderisce a #FN|ESN: è il primo sindaco “futurista” di un comune italiano superiore.
@Osservatorioitaliano