Выход из escape-последовательности в Python - PullRequest
0 голосов
/ 26 мая 2011

Я новичок в питоне. Цель состоит в том, чтобы выполнить команду оболочки, используя синтаксический анализ подпроцесса и извлечь напечатанный вывод из оболочки. Ошибки выполнения выводятся, как показано в примере выходных сообщений ниже. Ниже также показан пример кода

Фрагмент кода:

testStr = "cat tst.txt | grep Location | sed -e '/.*Location: //g' "
print "testStr = "+testStr
testStrOut = subprocess.Popen([testStr],shell=True,stdout=subprocess.PIPE).communicate()[0]

Выход:

testStr = cat tst.txt | grep Location | sed -e '/.*Location: //g' 
cat: tst.txt: No such file or directory
sed: -e expression #1, char 15: unknown command: `/'

Есть ли обходной путь или функция, которую можно использовать?

Ценю вашу помощь Спасибо

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Вы должны передавать testStr непосредственно в качестве первого аргумента, а не заключать его в список. См. subprocess.Popen , абзац, который начинается «В Unix с shell = True: ...».

1 голос
/ 26 мая 2011

Полагаю, ваша основная ошибка не связана с питоном.Точнее, их 3:

  1. Вы забыли import subprocess.
  2. Это должно быть sed -e 's/.*Location: //g'Вы написали ///g вместо s///g.
  3. tst.txt не существует.
...