python中的getstatusoutput返回不正确的结果

python中的getstatusoutput返回不正确的结果,python,macos,Python,Macos,我正在写一个在Mac浏览器窗口中打开路径的方法。因此,我在python中使用命令模块的getstatusoutput方法。我有以下代码: Path = "file:///" + USERHOME filePath = os.path.join(Path, filePath) ret, out = commands.getstatusoutput('open "%s"' % filePath) 此方法适用于大多数文件/文件夹,但名为“old,;“{}&”的文件/文件夹除外。在本例中,如果我不将

我正在写一个在Mac浏览器窗口中打开路径的方法。因此,我在python中使用命令模块的getstatusoutput方法。我有以下代码:

Path = "file:///" + USERHOME
filePath = os.path.join(Path, filePath)

ret, out = commands.getstatusoutput('open "%s"' % filePath)

此方法适用于大多数文件/文件夹,但名为“old,;“{}&”的文件/文件夹除外。在本例中,如果我不将“file://”放在上述实际路径之前,它就起作用了。我不明白为什么会这样。有人能指出我在这里遗漏了什么吗?

如果您使用的是2.7+版,请不要使用“命令”模块。它已被弃用,并被替换为

其次,不要使用文件:///前缀。使用-R标志告诉open在Finder中显示它。从打开的手册页:

-R在查找器中显示文件,而不是打开它们

例如:

import subprocess
subprocess.Popen(["open", "-R", "/path/to/myfile/old,;'{}&"])

但实际上,每当用户单击指向该文件的链接时,我都需要从我的应用程序中打开该文件。所以,我使用了getstatusoutput方法。正如您所提到的,我使用subprocess.call()方法进行了检查,但仍然面临打开文件的问题。那么,这个问题是因为“;”吗在文件名中?我在回答中添加了一个示例。当我在ipythonshell中执行此操作时,Finder打开,文件被选中。否则,你必须提供更多关于你想要发生什么的细节。