Pull to refresh

Comments 2

Эммм… Простите, а что есть такого в shell(если это не, скажем, zsh), чего невозможно достичь в Python? Os, subprocess и иже с ними дают сносные результаты.
Допустим, я захотел «пнуть»(зажечь капслед) /dev/input/event12(у меня там виртуальная клавиатура). Как это осуществить без root в python-shell? В os.popen через sudo запросто.
Заинтересуйте меня ;)
Доброго времени суток!

Ваша претензия интересна по нескольким пунктам, рассмотрим:
Простите, а что есть такого в shell(если это не, скажем, zsh), чего невозможно достичь в Python? Os, subprocess и иже с ними дают сносные результаты.

Если вы читали предыдущий пост о данных библиотеках, то должны знать, что python-shell и smart-env, по сути, удобные обертки над стандартными os, subprocess, а впоследствии потенциально paramiko, shutil, shlex и др. Удобство заключается в том, что девопсу (да и разработчику) не нужно заморачиваться деталями реализации тех или иных задач на Python, а также уменьшить количество повторений кода. Так что результаты там сносные, но использование библиотек из поста — это как запрашивать сущности из БД через ORM вместо запуска raw-SQL запросов.

Допустим, я захотел «пнуть»(зажечь капслед) /dev/input/event12(у меня там виртуальная клавиатура). Как это осуществить без root в python-shell? В os.popen через sudo запросто.
Заинтересуйте меня ;)


Во-первых,
Shell.sudo(*my_command_with_args)  # если вы не из sudoers, то введете пароль там же

Во-вторых,
sudo myscript.py

# myscript.py
Shell.<mycmd>(*args)
# или
Shell("my-cool-cmd")(*args)


З.Ы: использование os.popen() в наше время — моветон. Об этом даже в документации Python написано.

В заключение: библиотеки развиваются, возможностей будет гораздо больше. В данный момент добавляю функционал по неблокирующим вызовам. В будущем можно будет сделать вещи вроде объединения команд через | и перенаправления >,<,>>. Но все постепенно — я за соблюдение чистоты кода, а не «накидать MVP для рынка — потом как-нибудь поправим»: с этих библиотек мне шекели не капают. :)
Sign up to leave a comment.

Articles