Я разрабатываю программу, которая должна использовать os.system из-за старых ограничений Python. В настоящее время я застрял в одном маленьком пятне.
os.system("C:\\FIOCheck\\xutil.exe -i get phy" +HBEA + ">C:\\FIOCheck\\HBEAResult.txt")
Это кусок кода, который я пытаюсь проработать. Он получит доступ к внешней программе, которая имеет некоторые параметры. HBEA — это переменная, которую я пытаюсь передать (которая получена ранее в программе). Затем программа берет все, что создано .exe, и передает его во внешний файл. На данный момент переменная HBEA не передается в командную строку, поэтому .exe никогда не запускается, что приводит к тому, что .txt остается пустым. Поскольку файл пустой, я не могу получить из него данные и, следовательно, не могу завершить программу.
Любые идеи?
РЕДАКТИРОВАТЬ: Итак, я попытался использовать следующий код в соответствии с некоторыми предложениями:
cmd = "C:\\FIOCheck\\xutil.exe -i get phy " +HBEA + ">C:\\FIOCheck\\HBEAResult.txt"
print cmd
os.system(cmd)
Был сгенерирован следующий вывод:
50012BE00004BDFF #HBEA variable
C:\FIOCheck\xutil.exe -i get phy 50012BE00004BDFF>C:\FIOCheck\HBEAResult.txt #the cmd var
Однако это все еще не передает значение. Не слишком ли длинная переменная HBEA?
РЕШЕНО
Эта программа работала с некоторыми правками из лучшего ответа. Команды передавались правильно, однако то, как я их отформатировал, было неверным. Новое форматирование выглядит так:
cmd = "C:\\FIOCheck\\xutil.exe -i " + HBEA + " get ver" + ">C:\\FIOCheck\\HBEAResult.txt"
os.system(cmd)
Спасибо за помощь!
'phy'
с содержимымHBEA
без пробелов между ними? Когда я устанавливаю значение дляHBEA
, оно объединяется с вашей строкой, поэтому неясно, где вы теряете значение для этой переменной. Можете ли вы распечатать его непосредственно перед созданием этой команды? - person Levon   schedule 17.07.2012HBEA
отдельно, затем отдельно построил бы командную строку (cmd
) и распечатал ее для проверки, а затем вызвал быos.system(cmd)
- person Levon   schedule 17.07.2012phy50012BE00004BDFF
.. неphy 50012BE00004BDFF
, так что, возможно, вы что-то изменили. Кроме того, просто добавьте'\n'
к вашей строке. Это не должно иметь значения, но все равно попробуйте. - person Levon   schedule 17.07.2012