【问题标题】:Open a file from a specific program from python从 python 的特定程序打开文件
【发布时间】:2012-04-08 12:20:57
【问题描述】:

我想做一件很简单的事,但我很迷茫。

我正在使用一个名为 Blender 的程序,我想在 python 中编写一个脚本,它打开一个 .blend 文件,但使用与 blender 文件位于同一文件夹中的 blender.app,而不是使用 blender.app位于应用程序中。 (使用 Macosx)

所以我想这应该可以完成这项工作...但是它会打开搅拌机两次...

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")

但不幸的是,它会使用位于 Applications...中的默认 blender.app 打开 .blend 文件...

有什么想法吗?

【问题讨论】:

  • 你实际上是在当前目录中的一个名为path的文件夹中进行cd,这是一个错字吗?
  • @agf 好吧,我试过这个,但它仍然会打开两个搅拌机。

标签: python macos blender


【解决方案1】:

这不起作用,因为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"])

【讨论】:

    【解决方案2】:

    您是否尝试过告诉open 命令使用特定应用程序打开它?

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

    你的第一次尝试是在正确的轨道上,但你真的告诉open 只打开两个不同的东西。不相干。

    【讨论】:

    • 嗯,你建议的那个没有用......你是对的。它打开了两个不同的东西,但它们都是空的!
    • 它仍然会打开两个不同的搅拌机
    • 这毫无意义。那么为什么@Philipp 的回答会有所不同呢?它与 os.system vs subprocess 无关。我觉得你忘了添加 -a 标志
    • 我确认您的问题并未在您的尝试中包含 -a 标志。我的回答建议使用 -a 并使用给定的应用程序路径打开您的文件。它的工作原理与@Phillips 的答案相同,但他添加了子流程,这实际上是一回事。
    • 嗯,我试过了,使用了 philip 和你的第一个解决方案,但它实际上不起作用。我在这里想念什么吗?
    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2017-06-17
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    相关资源
    最近更新 更多