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

在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 asked 2019-06-11T19:42:19Z

14个解决方案

37 votes

如果使用Python 2.7或更高版本(特别是在Python 3.5之前),您可以使用以下内容:

import subprocess

subprocess.check_call([r"C:\pathToYourProgram\yourProgram.exe", "your", "arguments", "comma", "separated"])运行args描述的命令。 等待命令完成,然后返回returncode属性。

subprocess.check_call([r"C:\pathToYourProgram\yourProgram.exe", "your", "arguments", "comma", "separated"])用参数运行命令。 等待命令完成。 如果返回码为零则返回,否则引发CalledProcessError。 CalledProcessError对象将在returncode属性中包含返回代码

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

在常规Python字符串中,\ U字符组合表示a   扩展的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 answered 2019-06-11T19:43:45Z

35 votes

那些空格真的很麻烦:-(。尝试.exe,然后是os.system,subprocess方法的相对路径,或者其他......

如果尽力而为试图绕过路径中的空白障碍继续失败,那么我的下一个最佳建议是避免在关键路径中出现空白。 难道你不能制作一个没有空白的目录,在那里复制关键的.exe文件,然后试试吗? 这些破坏性破坏的空间对你的健康是绝对必要的吗?

Alex Martelli answered 2019-06-11T19:42:40Z

19 votes

最简单的方法是:

import os

os.startfile("C:\Documents and Settings\flow_model\flow.exe")

有用; 我尝试过这个。

Someone answered 2019-06-11T19:44:12Z

18 votes

如果我是你,我会尝试在你的路径前插入一个'r'来表示它是一个原始字符串 - 然后你就不必使用正斜杠了。 例如:

os.system(r"C:\Documents and Settings\flow_model\flow.exe")

Jon Mills answered 2019-06-11T19:44:36Z

18 votes

你的用法是正确的。 我打赌你的外部程序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"')

(注意单引号内的双引号......)

Adrien Plisson answered 2019-06-11T19:45:14Z

8 votes

使用子进程,它是一个较小的模块,因此它可以更快地运行.exe。

import subprocess

subprocess.Popen([r"U:\Year 8\kerbal space program\KSP.exe"])

Frodo Baggins answered 2019-06-11T19:45:39Z

6 votes

通过使用os.system:

import os

os.system(r'"C:/Documents and Settings/flow_model/flow.exe"')

romy answered 2019-06-11T19:46:04Z

3 votes

尝试

import subprocess

subprocess.call(["C:/Documents and Settings/flow_model/flow.exe"])

int3 answered 2019-06-11T19:46:23Z

1 votes

这是否试图执行subprocess.call()参数为"and", "Settings/flow_model/flow.exe"?

另外,您可以考虑subprocess.call()。

Thanatos answered 2019-06-11T19:46:55Z

1 votes

如果是我,我会将EXE文件放在根目录(C :)中,看看它是否有效。 如果是这样,它可能是目录名中的(已经提到的)空格。 如果不是,则可能是某些环境变量。

另外,尝试检查stderr(使用int3的早期答案):

import subprocess

process = subprocess.Popen(["C:/Documents and Settings/flow_model/flow.exe"], \

stderr = subprocess.PIPE)

if process.stderr:

print process.stderr.readlines()

代码可能不完全正确,因为我通常不使用Popen或Windows,但应该给出这个想法。 可能是错误消息在错误流上。

extraneon answered 2019-06-11T19:47:35Z

0 votes

这是正确的用法,但也许路径名中的空格由于某种原因弄乱了。

您可能还希望在cmd.exe下运行该程序,以便可以看到flow.exe中可能指示错误的任何输出。

Dan Olson answered 2019-06-11T19:48:07Z

0 votes

对于上述问题,此解决方案有效。

只需更改可执行文件所在的路径即可。

import sys, string, os

os.chdir('C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\\bin64')

os.system(r"C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\bin64\\flowwork.exe)

'''import sys, string, os

os.chdir('C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\\bin64')

os.system(r"C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\bin64\\pdftopng.exe test1.pdf rootimage")'''

这里test1.pdf rootimage是我的代码。

spurthi answered 2019-06-11T19:48:46Z

0 votes

import os

path = "C:/Documents and Settings/flow_model/"

os.chdir(path)

os.system("flow.exe")

John answered 2019-06-11T19:49:04Z

0 votes

有许多不同的解决方案,结果将强烈依赖于:

您正在使用的操作系统:Windows,Cygwin,Linux,MacOS

您正在使用的python版本:Python2或Python3x

因为我发现了一些声称仅在Windows中工作的东西,但是,可能是因为我碰巧使用Cygwin,这超出了操作系统处理Windows路径的方式。 其他东西只适用于基于纯* nix的操作系统或Python2或3。

以下是我的发现:

一般来说,explorer是最宽容的方法。

explorer是最不宽容的。 (仅限Windows,如果你很幸运,还有&&)

explorer不推荐

推荐的方式是explorer!

请记住,对任何事物使用explorer可能会带来安全隐患。

试试这些:

import os, subprocess

...

winView = '/cygdrive/c/Windows/explorer.exe %s' % somefile

...

# chose one of these:

os.system(winView)

subprocess.Popen(['/cygdrive/c/Windows/explorer.exe', 'somefile.png'])

subprocess.run(winView, shell=True)

问:为什么要在Windows中使用explorer?

答:因为如果您只想查看某些新文件的结果,资源管理器将自动打开该文件,其中包含您为该文件类型设置的任何默认Windows程序。 因此无需重新指定要使用的默认程序。

not2qubit answered 2019-06-11T19:50:46Z

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word里画的流程图怎么全选_怎么用word画流程图

word是我们最常用的文档编辑软件了,他除了可以制作文字图片的编辑之外,其实它还可以轻松制作出一些简单的流程图,那么又是如何操作的呢?让我们一起看下去吧!一、word画流程图虽说word不是专门使用来画流程图的&#xf…

python中值滤波去除椒盐噪声_Python实现图像去噪方式(中值去噪和均值去噪)

实现对图像进行简单的高斯去噪和椒盐去噪。 代码如下: import numpy as np from PIL import Image import matplotlib.pyplot as plt import random import scipy.misc import scipy.signal import scipy.ndimage from matplotlib.font_manager import FontProperti…

二次扩增产物条带弥散_PCR实验操作常见解决方法

1. cDNA产量的很低可能的原因:*RNA模板质量低*对mRNA浓度估计过高*反应体系中存在反转录酶抑制剂或反转录酶量不足*同位素磷32过期*反应体积过大,不应超过50μl2. 扩增产物在电泳分析时没有条带或条带很浅*常见的原因在于您的反应体系是PCR的反应体系而不…

java 关注公众号没有调接口_深入理解Java继承、封装、多态的实现原理

点击关注上方“Java技术江湖”,设为“置顶或星标”,第一时间送达技术干货。作者:黄小斜文章来源:微信公众号【Java技术江湖】目录从JVM结构开始谈多态JVM 的结构Java 的方法调用方式常量池(constant pool)图 2. 常量池各表的关系方…

wordpress友联_Wordpress 友情链接页面终极版 – Fatesinger

之前写过一篇带头像的友情链接页面,当时有朋友说怎么能支持分类,我让他仿照以前不带头像的旧方法修改下,以前旧方法是用SQL语句获取的分类,其实完全可以通过Wordpress 自带的函数来实现,原因你懂的。而且还有一部分朋友…

系统相机裁剪比例_如何正确设置相机:6个最常见的错误,你还在犯错吗?

你是否在摄影中出现这样的设置错误?查看相机的这6个设置,并按照以下自定义提示操作,以增强照片质量并提高专业摄影水平。1.白平衡绝大多数照片是在自动白平衡模式下拍摄的。这是一个简单的选择,在大多数情况下是合理的,但这不是1…

java 正则首位8或者9的8位数字_正则简单手机号和邮箱练习

正则表达式的组成规则在java中,正则表达式的编译是类java.util.regex.Pattern正则表达式的构造摘要1.字符x包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号的普通字符。比如之前的例子可以将[1-9][0-9]{4,12}改成1[0-9]{4,12}或者a[0-9]{4,12}此时就…

inputstreamreader 编码不完整_素材编码对剪辑效率的影响

这次说说在项目的剪辑阶段关于编码的一些注意事项。压缩编码会拖慢剪辑速度大多数中低端摄像机都使用其于时间压缩的编码来进行录制,也称为Long GOP压缩。这种编码对于缩小文件体积很有用,但是计算机不得不耗费更多的性能来进行剪辑。简单来讲&#xff0…

python定义三维数组不指定长度_插值/调整三维数组大小

ndimage.zoom 这可能是最好的方法,zoom method正是为这类任务而设计的。from scipy.ndimage import zoom new_array zoom(array, (0.5, 0.5, 2)) 按指定的因子更改每个维度中的大小。如果数组的原始形状是(40, 50, 60),那么新的数组将是(20, 25, 120)。…

django默认缓存是多大_Django之缓存 - osc_fd8vzgsi的个人空间 - OSCHINA - 中文开源技术交流社区...

一、缓存由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中&#xff0c…

mac xampp连接mysql数据库_请问在mac下xampp无法读取mysql的数据

报错信息如下:Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /Applications/XAMPP/xamppfiles/htdocs/test/db.class.php:51 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/test/db.class.php(31): ms_new_mysql->conn…

python调用shell脚本的参数_使用python执行shell脚本 并动态传参 及subprocess的使用详解

最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库subprocess这个模块可以非常方便的启动一个子进程,并且控制其输入和输出Class Popen(args&#xff0c…

mysql replication延迟_深入mysql主从复制延迟问题的详解

面试mysqldba的时候遇到一个题:描述msyql replication 机制的实现原理,如何在不停掉mysql主库的情况下,恢复数据不一致的slave的数据库节点?MySQL的复制(replication)是一个异步的复制,从一个MySQL instace(称之为Mast…

gitlab 安装gitlabrunner 无法连接tiller_谈一谈GitLab Runner是个什么东东?

概念我从官网搜了一下,GitLab Runner 是一个开源项目, 它用来运行你定制的任务(jobs)并把结果返回给 GitLab。 GitLab Runner 配合GitLab CI(GitLab 内置的持续集成服务) 协调完成任务。gitlab想要了解 GitLab Runner之前,我们先要知道或者说…

mysql百万级去重_mysql优化小技巧之去除重复项(百万级数据)

mysql优化小技巧之去除重复项(百万级数据)发布时间:2018-06-11 11:54,浏览次数:482, 标签:mysql说到这个去重,脑仁不禁得一疼,尤其是出具量比较大的时候。毕竟咱不是专业的DB,所以嘞,只能自己弄…

高中必背88个数学公式_高中数学:必修+选修全部知识点精华!附高考必背203个公式...

童鞋们好呀,2021高考将至,但是很多高三同学还是处于一个很不好的状态感觉每一科都很紧张,学校学习的节奏快,自己基础又没跟上,还要补基础总觉得后一步还没跟上,就要迈下一步了,不知道从哪学&…

mysql获取逻辑日志_Mysql 逻辑架构图及日志系统

1、Mysql逻辑架构图场景一:一条SQL语句如何执行?如图显示一条SQL语句的执行过程:执行器的执行流程:2、Mysql日志系统说到日志系统,需要了解几个概念:creash-safe、redo log、binlog、WAL技术。Redo log用于…

专科学python真的不好_专科生转行做python运维靠谱吗?

看了下问题,专科做运维,的确在找工作的时候没有优势,but,这并不代表运维行业对学历要求高,而是你找别的工作,专科也没有什么优势。知乎水平动辄985,专科就显得那么的微不足道。但没有竞争力不太表找不到相关…

mysql实例详解_MySQL 多实例详解

MySQL多实例配置方法1、单一配置文件2、多配置文件。二、实战步骤:1、同步时间2、准备mysql依赖包3、环境准备3.1添加mysql用户3.2编译安装mysql4、安装MySQL多实例5、准备配置文件6、启动MySQL7、登录mysql与一些安全措施8、关闭MySQL9,、提供简易管理脚本10、为my…

如何提高go代码覆盖率_如何通过静态分析提高iOS代码质量

随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析。程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分…