如果没有目录,我该如何禁用该消息?蟒蛇

时间:2014-08-10 22:19:20

标签: python

例如,如果我使用以下代码打开应用程序:

import os
os.system("open /Applications/IAmAnApp.app")

但是如果没有像IAmAnApp这样的应用程序,它将显示以下消息:

The file /Users/Username/Desktop/Python/iamanapp does not exist.

我尝试使用try然后除外,但它不是错误,只是一条消息。

如何禁用此消息并让代码继续?

5 个答案:

答案 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)