【发布时间】:2019-05-07 22:28:01
【问题描述】:
import webbrowser
import os
try:
response=os.system('start notepad++.exe')
except OSError:
webbrowser.open("https://www.rollapp.com/launch/notepad++")
如果系统中安装了notepad++,那么它应该打开,否则在线notepad++应该启动。
但是,try 和 except 不能以这种方式工作。
它是如何工作的?
【问题讨论】:
-
看这个问题stackoverflow.com/questions/6466711/…。您将看到
os库没有标准化的返回(因此不会被您的 except 子句捕获),因为它依赖于操作系统。此外,如果您的程序打开我的另一个程序(如果我有)或强迫我访问一个网站,我会非常恼火,您应该认真考虑另一种方法。 -
另请参阅此问题:gis.stackexchange.com/questions/86522/…。似乎您可以改用 subprocess.call() ,这将返回 OSError
-
subprocess确实是要走的路,它基于popen2并提供适当的异常支持等。 -
os.system不会在失败时引发异常。当您认为事情发生意外时,请考虑查阅文档。
标签: python