Я пытаюсь запустить команду оболочки из python, но как только я добавлю трубку, я получаю сообщение об ошибке «Ошибка OSError: [Errno 2] No such file or directory». Я пробовал разные вещи и даже ссылался на grep непосредственно в/bin/grep. Любая идея, что я делаю неправильно?Команды оболочки с трубой в Python
Работы:
import subprocess
p = subprocess.Popen(["ls"], stdout=subprocess.PIPE)
out, err = p.communicate()
print out
не работает:
import subprocess
p = subprocess.Popen(["ls | grep '20'"], stdout=subprocess.PIPE)
out, err = p.communicate()
print out
Отображаемое Ошибка:
[OMITTED]$ python test.py
Traceback (most recent call last):
File "test.py", line 2, in <module>
p = subprocess.Popen(["ls | grep '20'"], stdout=subprocess.PIPE)
File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
[OMITTED]$
Версия: Python 2.6.6 (r266: 84292, 22 января 2014 , 09:42:36) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] на linux2
Спасибо за это. Работала отлично. – paullb
@paullb добро пожаловать!) –