ошибка python с Popen при использовании подпроцесса

#python #linux #bash

#python #linux #bash

Вопрос:

У меня есть мой скрипт на Python, который

 var1 = subprocess.Popen("pwd | grep 'home' ");
print var1
  

Но это выдает мне ошибку

Комментарии:

1. В дополнение к вышеприведенным вопросам, что вы пытаетесь сделать? Вероятно, есть лучший (встроенный) способ сделать это.

Ответ №1:

Вам нужно добавить shell=True , если вы хотите, чтобы оболочка правильно интерпретировала канал:

 var1 = subprocess.Popen("pwd | grep 'home' ", shell=True)
  

(Обратите внимание, что вам не нужна точка с запятой в конце строки.) Однако это может привести не к тому, что вы ожидаете, — это возвращает объект Popen, поэтому вам нужно проверить, var1.wait() возвращает 0 он или нет.

Гораздо более простой способ, если вы просто хотите узнать, содержит ли текущий каталог ‘home’, — это выполнить:

 if 'home' in os.getcwd():
    print "'home' is in the current working directory's path"
  

Комментарии:

1. я получаю это <подпроцесс. Объект Popen в 0xb7ea0a6c>] . на самом деле я изучаю python и не знаю, с чего начать. есть ли какие-либо учебные пособия, которые могут помочь мне выполнять задачи Linux с помощью python

2. magazine.redhat.com/2008/02/07 / … (2-я ссылка в поиске Google для «замены python bash»)