2010-02-09 2 views
1

Возможные Дубликаты:
How to get output from subprocess.Popen()
Retrieving the output of subprocess.call()Python подпроцесс получить выход ребенка

Вот мой вопрос. У меня есть исполняемый файл, называемый device_console. Device_console предоставляет интерфейс командной строки для устройства. В device_console можно запустить четыре команды: статус, список, очистить и выйти. Каждая команда производит вывод. В качестве примера:

[[email protected] ~]$ device_console 

device_console> list 

File A 

File B 

device_console> status 
Status: OK 

device_console> clear 
All files cleared 

device_console> list 
device_console> exit 

[[email protected] ~]$ 

В рамках тестирования я хочу получить выходные данные каждой команды. Я хочу использовать Python для этого. Я рассматриваю подпроцесс Python, но каким-то образом я не могу собрать их вместе. Не могли бы вы помочь?

+0

Дубликат всех этих: http://stackoverflow.com/search?q=%5Bpython%5D+subprocess+output. В частности, http://stackoverflow.com/questions/1388753/how-to-get-output-from-subprocess-popen как один из многих точных дубликатов. –

ответ

2

Похоже, вы хотите что-то более похожее на «Ожидание».

выписка Pexpect

«Pexpect это чистый Python модуль, который делает Python лучший инструмент для контролирующей и автоматизации других программ. Pexpect похож на Дон LIBES Expect системы, но Pexpect как другой интерфейс, который проще понять. Pexpect в основном система соответствия шаблону. Он запускает выходные данные программ и часов. Когда выход соответствует заданному шаблону Pexpect может ответить так, как если бы человек был , набрав ответы. "

+0

Спасибо. Я тоже посмотрю на Pexpect. – innvtt

2

Используйте subprocess module. Пример:

import subprocess 

# Open the subprocess 
proc = subprocess.open('device_console', stdin=subprocess.PIPE, stdout.subprocess.PIPE) 

# Write a command 
proc.stdin.write('list\n') 

# Read the results back -- this will block until a line of input is received 
listing = proc.stdout.readline() 

# When you're done, close the input stream so the subprocess knows to exit 
proc.stdin.close() 

# Wait for subprocess to exit (optional) and get its exit status 
exit_status = proc.wait() 
Смежные вопросы