Я все еще очень новичок в Python и все еще обволакиваю все, что он может сделать. В настоящее время я работаю над небольшим приложением, чтобы помочь мне в моей работе. У этого есть графическое меню, которое позволяет мне выбирать приложения для установки на ПК. Проблема у меня есть некоторые из кнопок имеют два установщика, которые они запускают (32 и 64 бит). Мне нужна программа, чтобы дождаться завершения ее до начала следующего. Как мне это сделать?Как запустить несколько исполняемых файлов в python один за другим
Вот код ...
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
self.label.setText(_translate("Form", "What would you like to install?", None))
self.adobe_reader.setText(_translate("Form", "Adobe Reader", None))
self.flash.setText(_translate("Form", "Flash", None))
self.java_7.setText(_translate("Form", "Java 7", None))
self.java_8.setText(_translate("Form", "Java 8", None))
self.adobe_reader.clicked.connect(self.adobe)
self.flash.clicked.connect(self.flash13)
self.java_7.clicked.connect(self.java7)
self.java_8.clicked.connect(self.java8)
def adobe(self):
os.startfile("C:\\Users\\Erik\\Desktop\\install_reader_11.exe")
def flash13(self):
os.startfile("C:\\Users\\Erik\\Desktop\\install_flash_13_IE.exe")
os.startfile("C:\\Users\\Erik\\Desktop\\install_flash_13_nonIE.exe")
def java7(self):
os.startfile("C:\\Users\\Erik\\Desktop\\install_java-7u71-x32.exe")
os.startfile("C:\\Users\\Erik\\Desktop\\install_java-7u71-x64.exe")
def java8(self):
os.startfile("C:\\Users\\Erik\\Desktop\\install_java-8u25-x32.exe")
os.startfile("C:\\Users\\Erik\\Desktop\\install_java-8u25-x64.exe")
Вот отредактированный код после того, как я сделал изменения от Steve ... также сообщение об ошибке я получаю в питона терминале после запуска программы установки (который, кажется, работает).
def adobe(mycmd):
mycmd = r"C:\Users\Erik\Desktop\install_reader_11.exe"
try:
retcode = call(mycmd,shell = True)
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
print >>sys.stderr, "Child returned", retcode
except OSError as e:
print >>sys.stderr, "Execution failed:", e
retcode = -1
return retcode
def flash13(mycmd):
mycmd = r"C:\Users\Erik\Desktop\install_flash_13_IE.exe"
try:
retcode = call(mycmd,shell = True)
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
print >>sys.stderr, "Child returned", retcode
except OSError as e:
print >>sys.stderr, "Execution failed:", e
retcode = -1
return retcode
Ошибка Msg ...
print >> sys.stderr, "Child returned", retcode
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and
'_io.TextIOWrapper'
Спасибо!
Спасибо за ответ. Когда я пытаюсь запустить exe с помощью subprocess.call, я получаю это: «Ошибка ОС: [WinError 740] Запрошенная операция требует отметки« Я предполагаю, что это означает, что им нужны привилегии администратора? Я администратор на своем ПК и не имею никаких проблем с их установкой. – sloppyfrenzy
@sloppyfrenzy Странно. Когда я пытаюсь, установщики запускаются, как обычно, и запрашивают у пользователя повышение привилегий. Вы начинаете свой скрипт python как администратор, но это не очень элегантно. –
Странно. Я запускаю Win 8.1, если это имеет значение. Когда я щелкаю правой кнопкой мыши на файле python, я не вижу запуск как параметр администратора. Является ли Subprocess лучше использовать, чем ОС в целом? – sloppyfrenzy