从Python中打开特定程序的文件

3
我希望能做一件非常简单的事情,但我很迷茫。
我正在使用一个叫做Blender的程序,并且想要编写一个Python脚本来打开.blend文件,但是要使用与.blend文件位于同一文件夹中的blender.app,而不是位于应用程序中的blender.app。(在Macosx上使用)
所以我认为这应该可以完成工作...但它却打开了两次blender...
import os

path = os.getcwd()
print(path)
os.system("cd path/")
os.system("open blender.app Import_mhx.blend")

我也尝试过这个。
import os

path = os.getcwd()
print(path)
os.system("cd path/")
os.system("open Import_mhx.blend")

但不幸的是,它使用位于应用程序中的默认blender.app打开.blend文件... 有什么想法吗?

你实际上正在将当前目录切换到名为“path”的文件夹中,这是一个打字错误吗? - michele b
@agf 嗯,我尝试了这个,但是它仍然打开了两个Blender。 - Dimitra Micha
2个回答

4

这样做行不通,因为system 命令在子Shell中执行,而chdir 只对该子Shell有效。请使用以下命令替换:

os.system("open -a path/blender.app Import_mhx.blend")

或者(更好的选择)
subprocess.check_call(["open", "-a", os.path.join(path, "blender.app"),
                       "Import_mhx.blend"])

1

你尝试过使用open命令并指定特定应用程序打开它吗?

open -a /path/to/blender.app /path/to/Import_mhx.blend

你的第一次尝试是正确的方向,但实际上你只是在告诉open打开两个不同的东西,而不是一个与另一个。


好的,你建议的那个不起作用了...你是对的。它打开了两个不同的东西,但都是空的! - Dimitra Micha
它仍然打开了两个不同的Blender。 - Dimitra Micha
这毫无意义。那么@Philipp的答案为什么会有所不同呢?这与os.system vs subprocess没有任何关系。我觉得你忘记添加-a标志了。 - jdi
你一定是,因为它完全正常工作。也许是你命令中路径的问题。我使用了绝对路径。 - jdi
可能是因为路径的问题。 - Dimitra Micha
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接