我正在尝试构建一个打开Google Earth.app的脚本,我可以在Finder中看到它,但是当我转到应用程序文件夹时它不存在。我查看了其他一些帖子,通过sudo find / -iname *.app
查找了Google Earth.app的文件路径,该文件路径为/Applications/Google Earth.app
。当我尝试找到这个文件时,我得到'没有这样的文件或目录'。有人可以解释为什么Finder中的应用程序不会显示在终端中吗?另外,我如何找到正确的文件路径,以便我可以使用subprocess.Popen()在Python中打开Google地球。
答案 0 :(得分:0)
这里有两个问题:
1)那条路可能是正确的。特别是你没有正确使用find。您需要sudo find / -name "*.app"
(请注意*app
周围的引号)。从手册页:
-iname模式 与-name类似,但匹配不区分大小写。例如,模式'fo *'和'F ??'匹配文件名'Foo','FOO','foo','fOo'等。在这些模式中,与shell的文件扩展不同,初始'。'可以用'*'匹配。也就是说,find -name * bar将匹配文件'.foobar'。请注意,您应该引用模式,否则shell将扩展其中的任何通配符。
2)尝试使用subprocess.Popen(["/Applications/Google Earth.app"], shell=True)
。除非您正在接受用户输入,否则不要过分担心shell=True
的安全问题。如果只是用硬编码来使用你的Google地球之路,你就没事了。但是,如果您的逻辑中有用户输入,则 不要 使用shell=True
。 shell=True
只是意味着shell元字符在命令中会起作用。您需要它的原因是subprocess.Popen()
将无法解析您的命令,因为路径中有空格。或者,您可以使用os.system("/Applications/Google Earth.app")
。