我需要使用 python 在特定应用程序中打开一个文件。我将默认使用默认的应用程序位置/文件名打开文件;但是,如果应用程序无法打开,我想处理该错误并为用户提供一些其他选项。
到目前为止,我已经理解 subprocess.call 是最好的方法,而不是 system.os
应用程序:/Applications/GreatApp.app
这工作正常
subprocess.call(['open','/Applications/GreatApp.app','placeholder.gap'])
但是,当我开始添加 try / except 循环时,它们似乎什么也没做。(注意应用程序名称中的空格 - 我使用了不正确的名称来强制异常)
try:
subprocess.call(['open','/Applications/Great App.app','placeholder.gap'])
except:
print 'this is an error placeholder'
我仍然会在 python 中看到以下错误
The file /Applications/Great App.app does not exist.
我发现的最接近某种形式的错误处理如下。看看 retcode 的价值是解决这个问题的正确方法吗?
try:
retcode = subprocess.call("open " + filename, shell=True)
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
print >>sys.stderr, "Child returned", retcode
except OSError, e:
print >>sys.stderr, "Execution failed:", e
事实证明 retcode 不是办法,因为正确和错误的名称都会给出大于 0 的值。