尝试通过脚本打开Goog​​le地球,文件路径不存在

时间:2017-05-20 17:43:44

标签: python terminal filepath

我正在尝试构建一个打开Goog​​le Earth.app的脚本,我可以在Finder中看到它,但是当我转到应用程序文件夹时它不存在。我查看了其他一些帖子,通过sudo find / -iname *.app查找了Google Earth.app的文件路径,该文件路径为/Applications/Google Earth.app。当我尝试找到这个文件时,我得到'没有这样的文件或目录'。有人可以解释为什么Finder中的应用程序不会显示在终端中吗?另外,我如何找到正确的文件路径,以便我可以使用subprocess.Popen()在Python中打开Goog​​le地球。

1 个答案:

答案 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=Trueshell=True只是意味着shell元字符在命令中会起作用。您需要它的原因是subprocess.Popen()将无法解析您的命令,因为路径中有空格。或者,您可以使用os.system("/Applications/Google Earth.app")