【问题标题】:Open applications with Python, doesn't work when there are spaces in app name使用 Python 打开应用程序,当应用程序名称中有空格时不起作用
【发布时间】:2016-07-12 13:49:34
【问题描述】:

我正在尝试使用 python 打开应用程序。目前,这就是我得到的:

os.system("open " + "/Applications/" + app + ".app")

('app' 是一个带有 appname 的字符串,在整个脚本中会发生变化)

现在,我的问题是,当我尝试用一​​个单词作为名称打开应用程序时,它无法正常工作。像“搅拌机”或“括号”。但是,如果我尝试打开诸如 photoshop 之类的应用程序(在应用程序文件夹中名为“Adobe Photoshop CS6”),则什么也不会发生。我已经尝试了几个小时,经历了很多问题,其中许多都在谈论在字符串前添加一个“r”。我在字符串的每个部分之前都尝试过这个,并且还尝试将它全部封装在引号之间,但没有任何帮助。

为什么这甚至是一个问题?

【问题讨论】:

  • 你真的在执行一个shell命令。猜猜 open Adobe Photoshop CS6.app 在 shell 中的含义:3 个单独的参数。您至少需要为 shell 语法引用/转义:open 'Adobe Photoshop CS6.app'
  • 话虽如此,在 Python 中一定有比通过 shell 更好的方法来做到这一点。

标签: macos python-3.x os.system


【解决方案1】:

.app 位周围添加引号:

os.system("open " + "'/Applications/" + app + ".app'")
                     ^                             ^

所以它扩展为:

open '/Application/Hello World.app'

无论如何,您可能应该使用subprocess.call(),它接受数组元素中的参数并且不会遇到此问题。

【讨论】:

    猜你喜欢
    • 2022-12-30
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2013-02-05
    相关资源
    最近更新 更多