Модуль subprocess обеспечивает унифицированный интерфейса доступа к операционной системе. Модуль subprocess отвечает в языке Синтаксис Python за выполнение следующих действий: порождение новых процессов, соединение c потоками стандартного ввода, стандартного вывода, стандартного вывода сообщений об ошибках и получение кодов возврата от этих процессов.
Для запуска команд системы используется две функции subprocess.call() и subprocess.Popen(). Основное отличие этих функций между собой: функция subprocess.call() блокирует выполнение сценария до получения ответа, в то время как функция subprocess.Popen() - нет.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
def test1call():
retcode=subprocess.call("du -hs $HOME/.viminfo", shell=True)
if retcode == 0:
print ("success")
else:
print ("failure")
def main():
test1call()
if __name__ == '__main__':
main()
class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
Аргументы:
#!/usr/bin/env python
import subprocess
def ping1(ipaddress="192.168.1.14"):
p = subprocess.Popen("/bin/ping -c 2 %s" % ipaddress, shell=True,
stdout=subprocess.PIPE)
out = p.stdout.read() #в переменной out находится вывод команды ping. Ниже идет обработка вывода команды ping.
print out
result = out.split()
print result
if __name__ == '__main__':
ping1()
output='dmesg | grep hda' import subprocess p1 = subprocess.Popen(["dmesg"], stdout=subprocess.PIPE) p2 = subprocess.Popen(["grep", "hda"], stdin=p1.stdout, stdout=subprocess.PIPE)