Существует множество различных библиотек, которые позволяют вам вызывать внешние команды с помощью Python. Для каждой библиотеки я дал описание и показал пример вызова внешней команды. Команда, которую я использовал в качестве примера: ls -l
(список всех файлов). Если вы хотите узнать больше о любой из перечисленных мной библиотек и связать документацию для каждой из них.
Источники:
Это все библиотеки:
Надеюсь, это поможет вам принять решение о том, какую библиотеку использовать:)
подпроцесс
Подпроцесс позволяет вам вызывать внешние команды и подключать их к их каналам ввода / вывода / ошибок (stdin, stdout и stderr). Подпроцесс является выбором по умолчанию для запуска команд, но иногда лучше использовать другие модули.
subprocess.run(["ls", "-l"]) # Run command
subprocess.run(["ls", "-l"], stdout=subprocess.PIPE) # This will run the command and return any output
subprocess.run(shlex.split("ls -l")) # You can also use the shlex library to split the command
ОС
os используется для «функциональных возможностей, зависящих от операционной системы». Его также можно использовать для вызова внешних команд с os.system
и os.popen
(Примечание. Существует также подпроцесс.popen). os всегда запускает оболочку и является простой альтернативой для людей, которым не нужно или не знаете, как использовать subprocess.run
.
os.system("ls -l") # run command
os.popen("ls -l").read() # This will run the command and return any output
ш
sh - это интерфейс подпроцесса, который позволяет вам вызывать программы, как если бы они были функциями. Это полезно, если вы хотите выполнить команду несколько раз.
sh.ls("-l") # Run command normally
ls_cmd = sh.Command("ls") # Save command as a variable
ls_cmd() # Run command as if it were a function
* 1083 Свинец *
plumbum - это библиотека для "скриптовых" программ на Python. Вы можете вызывать такие программы, как функции, как в sh
. Plumbum полезен, если вы хотите запустить конвейер без оболочки.
ls_cmd = plumbum.local("ls -l") # get command
ls_cmd() # run command
pexpect
pexpect позволяет создавать дочерние приложения, управлять ими и находить шаблоны в их выходных данных. Это лучшая альтернатива подпроцессу для команд, которые ожидают tty в Unix.
pexpect.run("ls -l") # Run command as normal
child = pexpect.spawn('scp foo user@example.com:.') # Spawns child application
child.expect('Password:') # When this is the output
child.sendline('mypassword')
ткань
fabric - это библиотека Python 2.5 и 2.7. Позволяет выполнять локальные и удаленные команды оболочки. Fabric - простая альтернатива для запуска команд в защищенной оболочке (SSH)
fabric.operations.local('ls -l') # Run command as normal
fabric.operations.local('ls -l', capture = True) # Run command and receive output
посланник
Посланник известен как «подпроцесс для людей». Используется как удобная оболочка вокруг модуля subprocess
.
r = envoy.run("ls -l") # Run command
r.std_out # get output
команды
commands
содержит функции-оболочки для os.popen
, но он был удален из Python 3, поскольку subprocess
является лучшей альтернативой.
Редактирование было основано на комментарии Дж. Ф. Себастьяна.