例如,如果我使用以下代码打开应用程序:
import os
os.system("open /Applications/IAmAnApp.app")
但是如果没有像IAmAnApp这样的应用程序,它将显示以下消息:
The file /Users/Username/Desktop/Python/iamanapp does not exist.
我尝试使用try然后除外,但它不是错误,只是一条消息。
如何禁用此消息并让代码继续?
答案 0 :(得分:0)
如果这是open
打印的消息(不管这个命令是什么),那么之前测试文件存在怎么样?
os.system("test -f /Applications/IAmAnApp.app && open /Applications/IAmAnApp.app")
答案 1 :(得分:0)
import subprocess
try:
subprocess.call(["open /Applications/IAmAnApp.app"])
except OSError:
dosomething_else
答案 2 :(得分:0)
您可以使用shell重定向输出。
os.system('bash -c "open /Applications/IAmAnApp.app &> /dev/null"')
答案 3 :(得分:0)
这是一种快速简便的方法:使用os.path.isdir
来检测应用的存在。这是一个例子:
import os
app_path = os.path.join('/Applications', 'Safari.app')
if os.path.isdir(app_path):
print 'installed!'
else:
print 'not installed!'
请注意,您必须使用isdir
,而不是isfile
,因为OS X .app
捆绑包实际上是从Finder获得特殊处理的目录。这似乎也适用于符号链接,但我不知道它如何适用于别名。
答案 4 :(得分:0)
您应该使用旨在替换os.system
的{{3}}模块:
import subprocess
subprocess.Popen(['open', '/Applications/IAmAnApp.app'],
stderr=subprocess.STDOUT, stdout=subprocess.PIPE)