файл - запись в переменную python




Как сохранить результат выполненной команды оболочки в переменной в python? (3)

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

call=os.system("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'")
print call

Но он печатает результат в терминале и печатает значение вызова как ноль, возможно, указывающее как успех. Как получить результат, хранящийся в переменной?


В Python 3 вы можете использовать

import subprocess as sp
output = sp.getoutput('whoami --version')
print (output)

``

Вместо этого используйте модуль subprocess :

import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)

Изменить: это новое в Python 2.7. В более ранних версиях это должно работать (с переписанной командой, как показано ниже):

import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]

Как примечание стороны, вы можете переписать

cat syscall_list.txt | grep f89e7000

к

grep f89e7000 syscall_list.txt

И вы даже можете заменить весь оператор одним скриптом awk :

awk '/f89e7000/ {print $2}' syscall_list.txt

Ведущий к:

import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])

commands.getstatusoutput будет хорошо работать в этой ситуации.

import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))






shell