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
«Рыцарский альбом» (из серии «Средневековые войны»), 80х80см, холст, масло, Doping Pong, 2023
Это вторая работа из серии, посвящённой эстетике и философии средневекового милитаризма, получившего новые смыслы и роль на международной арене во втором десятилетии XXI века.
Зачастую политологи и социологи именуют наше время «Новым Средневековьем». Картина «Рыцарский альбом» отображает главенствующий ныне девиз, знакомый геймерам по игровому режиму «Все против всех, или Каждый сам за себя».
На архаичные воинские доспехи нанесены современные сочные камуфляжные паттерны, которые отсылают к разным природно-климатическим зонам, временам года и сторонам света: здесь есть и заснеженные горные ледники, и ослепительно солнечная пустыня, и непроходимая лесная чаща, и выжженная огнём извержений земля.
Картина композиционно и стилистически решена как обложка винилового альбома вымышленной хевиметалл рок-группы, участники которой не показывают публике своих лиц.
Сюжет картины может иметь множество толкований и визуализирован на стыке средневекового футуризма и неопоп-арта.
More info: Лот 21 - https://vladey.net/ru/lot/12312
#dopingpong#contemporaryart#modernpainting#middleages#knights#medievalwars
Adultery in the later Middle Ages was punished by religious penance, fines, corporal punishment, and public humiliation. In southern France, a punishment called “the run” forced an adulterous couple to move through the streets. They were often naked or in undergarments. In some cases, the woman held a rope attached to her lover’s genitals. A town crier announced the sentence to gather a crowd. The couple could be beaten at crossroads during the procession. Over time, towns increasingly allowed fines instead of public humiliation, especially for those who could pay, while poorer people were more often sentenced to “the run.”
⚖️🏃♂️📜
[Read more]
@googlefactss
#MiddleAges#HistoryFacts#MedievalLaw#Adultery#france#punishment