Форум сайта python.su
Всем доброго!
Бьюсь над одной проблемой, а именно мне необходимо узнать версию одной программы затем сравнить полученые данные со своими. Пишу так:
import os
pipe=os.popen('c:\\Program Files\\bondy\\bondy.exe --version')
x = pipe.read()
pipe.close
print x
if x == 7.13:
...
Офлайн
Я делаю практически также. Недочет приведённого кода, по моему, только в ожидании, что x числом будет. x = pipe.read() возвращает строку. Со строкой и надо сравнивать.
Офлайн
Если я пишу: print pipe перед print.close() компилятор выдает следующее:
<open file ‘c:\Program Files\bondy\bondy.exe –version’, mode ‘r’ at 0x00B8DAD0>
Офлайн
Cover Story: ну и прекрасно, пусть выдаёт.
Используй x = pipe.read(), а потом проверяй x:
if x == ‘7.13’:
Офлайн
у меня пустая строчка получилась:
>>> import os
>>> f = os.popen("C:\\Program Files\\7-Zip\\7zFM.exe --version")
>>> x = f.read()
>>> f.close()
1
>>> x
''
>>>
Офлайн
Striver Если так делать, то у меня тоже пусто!
Хотя в cmd данная строка: “c:\Program Files\bondy\bondy.exe –version” выдает именно номер версии
Отредактировано (Сен. 25, 2008 11:43:54)
Офлайн
Ну 7-Zip\7zFM.exe на –version и в командной строке ничего путного не выдаёт.
Я, конечно, не знаю, что такое bondy.exe, может есть своя специфика…
Вот как я принимаю ответ от консольной звонилки винды:
pipe=popen('rasdial "BSI"')
text=pipe.read()
return text
Офлайн
Данный вариант у меня тоже нормально отработал! Возможно rasdial воспринимается как команда, потому как команда “dir” тоже нормально отрабатывается. А тут идет речь о запуске файла с путем. Может мой bondy.exe как-нибудь можно превратить в команду, как windows превращает c:\windows\system32\rasdial.exe в rasdial, но мне кажется если используется программа то в Python'е должен быть другой синтаксис.
Офлайн
Cover Story, ты что-то путаешь. Винда как раз делает наоборот (впринципе как и Линукс), она просто ищет rasdial и если находит то запускает c:\windows\system32\rasdial.exe. Так что принципиальной разницы между этими двумя примерами нету.
P.S. Впринципе можешь скопировать rasdial.exe в любую другую папку и попробовать запустить его оттуда с указанием полного пути ;).
Офлайн
Спасибо, разобрался! Проблема оказалась в os.popen. Когда я устанавливаю программу по пути: c:\Program Files\bondy\bondy.exe os.popen не отрабатывается, но когда я установил программу c:\bondy\bondy.exe, все нормально заработало. Мне кажется, что причина кроется в том os.popen не понимает не понимает пробела между Program и Files. Хотя я могу и ошибаться.
Офлайн