Mes*_*sut 84 python executable
我刚刚开始研究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")
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
Ida*_*a N 41
如果使用Python 2.7或更高版本(特别是在Python 3.5之前),您可以使用以下内容:
import subprocess
Run Code Online (Sandbox Code Playgroud)
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
Ale*_*lli 40
那些空格真的很麻烦:-(.尝试os.chdir('C:/Documents\ and\ Settings/')使用相对路径os.system,subprocess方法或其他...
如果尽力而为试图绕过路径中的空白障碍继续失败,那么我的下一个最佳建议是避免在关键路径中出现空白.你能不能做一个空白较少的目录,复制的关键.exe文件存在,并尝试那?这些破坏性破坏的空间对你的健康是绝对必要的吗?
小智 23
最简单的方法是:
import os
os.startfile("C:\Documents and Settings\flow_model\flow.exe")
Run Code Online (Sandbox Code Playgroud)
有用; 我尝试过这个.
Jon*_*lls 21
如果我是你,我会尝试在你的路径前插入一个'r'来表示它是一个原始字符串 - 然后你就不必使用正斜杠了.例如:
os.system(r"C:\Documents and Settings\flow_model\flow.exe")
Run Code Online (Sandbox Code Playgroud)
Adr*_*son 20
你的用法是正确的.我打赌你的外部程序flow.exe需要在其目录中执行,因为它访问存储在那里的一些外部文件.
所以你可以试试:
import sys, string, os, arcgisscripting
os.chdir('c:\\documents and settings\\flow_model')
os.system('"C:\\Documents and Settings\\flow_model\\flow.exe"')
Run Code Online (Sandbox Code Playgroud)
(注意单引号内的双引号......)
小智 10
使用子进程,它是一个较小的模块,因此运行.exe速度更快.
import subprocess
subprocess.Popen([r"U:\Year 8\kerbal space program\KSP.exe"])
Run Code Online (Sandbox Code Playgroud)
小智 7
通过使用os.system:
import os
os.system(r'"C:/Documents and Settings/flow_model/flow.exe"')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
267626 次 |
| 最近记录: |