Python异常处理在os.system中不起作用

时间:2018-12-06 09:00:11

标签: python

and b.companyID = c.companyID

如果系统中安装了notepad ++,则应将其打开,否则应启动联机notepad ++。

但是,import webbrowser import os try: response=os.system('start notepad++.exe') except OSError: webbrowser.open("https://www.rollapp.com/launch/notepad++") try不能以这种方式工作。

它如何工作?

2 个答案:

答案 0 :(得分:0)

这是因为OS不会引发异常(如预期的那样)取决于操作系统,而是返回退出代码(0),该退出代码在documentation中进行了明确描述。相反,您应该考虑使用subprocess.call(),它在其周围提供一个超集(popen)。例如,以下方法将起作用(我会让您担心找到notepad ++安装位置hint)。

import webbrowser
import subprocess
try:
    # NOTE: The hardcoded path
    response=subprocess.call('C:/Program Files (x86)/Notepad++/notepad++.exe')
except OSError:
    webbrowser.open("https://www.rollapp.com/launch/notepad++")

答案 1 :(得分:-1)

try / except用于您的代码执行抛出某种Exception的情况,这种情况在您的示例中没有发生。进一步了解here

您可以在response中查找值,以查看尝试执行的命令的退出状态。 通常,如果返回0,则命令已成功执行,否则未成功执行。 这意味着代码将如下所示:

response=os.system('start notepad++.exe')
if response != 0:
    webbrowser.open("https://www.rollapp.com/launch/notepad++")