Аргументы Python и командная строка - PullRequest
0 голосов
/ 02 апреля 2012

Я очень плохо знаком с python, и у меня на работе есть скрипт, который мне нужно выяснить.

Мой скрипт анализирует вывод какого-то exe-файла (назовем его Mywork.exe), который обрабатывает другой двоичный файлфайлы (назовем это Обработанные Бинарные).Теперь мой scrpit хочет в какой-то момент взять имя обработанного двоичного файла и выполнить для него objdump.Я вижу, что предыдущий автор (для меня недоступный) использовал эту строку sys.argv [1], чтобы получить имя processingBinary.Мой скрипт обрабатывает вывод MyWork.exe.Пока что единственный способ успешно вызвать скрипт - это запустить:

MyWork.exe processingBinary |/ usr / bin / python ./myScript.py -v

И тогда мой скрипт обрабатывает вывод правильно, но он вообще не получает имя processingBinary (вместо этого sys.argv [1] на самом деле ""-v ").Итак, у меня есть пара вопросов:

1) Есть ли лучший способ запустить мой сценарий, чтобы sys.argv [1] был именемprobinary?2) если ответ на предыдущий вопрос - нет, есть ли способ получить имя обработанного двоичного файла каким-либо лучшим способом?3) Возможно, у вас есть предложения по реализации / вызову скрипта?

Заранее спасибо!

1 Ответ

0 голосов
/ 02 апреля 2012

Вы можете вызвать MyWork.exe из скрипта Python и передать имя обработанного двоичного файла этому скрипту.

import subprocess
import sys
command = 'MyWork.exe %s' % (sys.argv[1])
proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.wait()
output = (proc.stdout.read(), proc.stderr.read())

Вывод теперь является кортежем stdout и stderr MyWork.exe

...