2014-01-05 5 views
0

Я читал о модуле подпроцесса и очень смутился. В моей функции поиска я хотел использовать subprocess.check_output, чтобы вернуть напечатанное сообщение об ошибке моего выбора, когда grep не смог найти пользователей, вводимых в текстовый файл. Как мне это сделать? Использование Python 2,7Subprocess.call & check_output Python2.7

import subprocess 

def menu(): 
    usr = raw_input("Press 1 if you are creating a new entry, press 2 for search or 3 to exit") 
    if usr == '1': 
     collect() 
    if usr == '2': 
     search() 
    if usr == '3': 
     sys.exit() 
    if usr == '4': 
     subprocess.call(['vim', '-c', '10', 'book.txt']) 
def search(): 
    inp = raw_input("Please enter a name:") 
    subprocess.call(['rgrep', '-e', inp]) 
    search() 
def collect(): 
    def do_global(): 
     global name, ac, number 
     name = raw_input("Name") 
     ac = raw_input("Area Code") 
+0

Вы можете быть заинтересованы в более высоких обертках на уровне около подпроцесс как [ш] (HTTP: // amoffat. github.io/sh/). –

ответ

1
if subprocess.call(['rgrep', '-e', inp]) != 0: # rgrep failed 
    print("error message of your choosing") 

Чтобы узнать, что статус выхода grep может производить, см its man page

+0

Себастьян, где я найду документацию с целью! = 0, которую вы указали в своем ответе. Я хотел бы узнать больше об этом. Спасибо – toykloner

+0

@toykloner: вы можете начать с [статьи в Википедии «Статус выхода»] (http://en.wikipedia.org/wiki/Exit_status). – jfs

Смежные вопросы