Python异常处理在中不起作用操作系统

2024-09-29 19:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

import webbrowser
import os
try:
    response=os.system('start notepad++.exe')
except OSError:
    webbrowser.open("https://www.rollapp.com/launch/notepad++")

如果notepad++安装在系统中,那么它应该打开,否则联机notepad++应该启动。

但是,try和{}不是这样工作的。

它是如何工作的?


Tags: httpsimportosresponsewwwopenexesystem
2条回答

这是因为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++")

try/except用于代码执行抛出某种Exception的情况,这在您的示例中没有发生。阅读更多关于这个here

您可以在response中查找值,以查看您试图执行的命令的退出状态。 通常,如果返回0,则命令执行成功,否则执行失败。 这意味着代码看起来像:

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

相关问题 更多 >

    热门问题