在 Python 中运行外部程序(可执行文件)?

新手上路,请多包涵

我刚开始研究 Python,并且一直在尝试从 Python 运行外部可执行文件。

我有一个用 Fortran 编写的程序的可执行文件。假设可执行文件的名称是 flow.exe。我的可执行文件位于 C:\Documents and Settings\flow_model 。我尝试了 os.system 和 popen 命令,但到目前为止我无法使其工作。以下代码似乎打开了命令窗口,但它不会执行模型。

 # Import system modules
import sys, string, os, arcgisscripting
os.system("C:/Documents and Settings/flow_model/flow.exe")

我怎样才能解决这个问题?

原文由 Mesut 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 592
2 个回答

那些空格真的很麻烦。尝试 os.chdir('C:/Documents\ and\ Settings/') 后跟 os.systemsubprocess 方法或其他方法的相对路径…

如果尽力绕过路径中的空格障碍的尝试一直失败,那么我的下一个最佳建议是 避免 在关键路径中出现空格。难道你不能制作一个无空格的目录,复制关键的 .exe 文件,然后试试 ?那些破坏性的空间对你的幸福来说绝对是必不可少的吗……?

原文由 Alex Martelli 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果使用 Python 2.7 或更高版本(尤其是 Python 3.5 之前的版本),您可以使用以下命令:

 import subprocess

  • subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False) 运行 args 描述的命令。等待命令完成,然后返回 returncode 属性。
  • subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False) 运行带有参数的命令。等待命令完成。如果返回代码为零则返回,否则引发 CalledProcessError。 CalledProcessError 对象将在 returncode 属性中具有返回码

示例: subprocess.check_call([r"C:\pathToYourProgram\yourProgram.exe", "your", "arguments", "comma", "separated"])

在常规 Python 字符串中,\U 字符组合表示扩展的 Unicode 代码点转义。

这是文档的链接:http: //docs.python.org/3.2/library/subprocess.html

对于 Python 3.5+,您现在可以在许多情况下使用 run(): https ://docs.python.org/3.5/library/subprocess.html#subprocess.run

原文由 Ida N 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题