日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2025/3/15 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python运行外部程序_在Python中运行外部程序(可执行文件)? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Python中運行外部程序(可執(zhí)行文件)?

我剛剛開始研究Python,我一直在嘗試從Python運行外部可執(zhí)行文件。

我有一個用Fortran編寫的程序的可執(zhí)行文件。 假設可執(zhí)行文件的名稱是flow.exe。 我的可執(zhí)行文件位于C:\Documents and Settings\flow_model.我嘗試了os.system和popen命令,但到目前為止我無法使其工作。 以下代碼似乎打開命令窗口,但它不會執(zhí)行模型。

# 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"])用參數(shù)運行命令。 等待命令完成。 如果返回碼為零則返回,否則引發(fā)CalledProcessError。 CalledProcessError對象將在returncode屬性中包含返回代碼

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

在常規(guī)Python字符串中,\ U字符組合表示a?? 擴展的Unicode代碼點轉義。

以下是文檔的鏈接:[http://docs.python.org/3.2/library/subprocess.html]

對于Python 3.5+,您現(xiàn)在可以在許多情況下使用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方法的相對路徑,或者其他......

如果盡力而為試圖繞過路徑中的空白障礙繼續(xù)失敗,那么我的下一個最佳建議是避免在關鍵路徑中出現(xiàn)空白。 難道你不能制作一個沒有空白的目錄,在那里復制關鍵的.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需要在其目錄中執(zhí)行,因為它訪問存儲在那里的一些外部文件。

所以你可以試試:

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

這是否試圖執(zhí)行subprocess.call()參數(shù)為"and", "Settings/flow_model/flow.exe"?

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

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

1 votes

如果是我,我會將EXE文件放在根目錄(C :)中,看看它是否有效。 如果是這樣,它可能是目錄名中的(已經提到的)空格。 如果不是,則可能是某些環(huán)境變量。

另外,嘗試檢查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

對于上述問題,此解決方案有效。

只需更改可執(zhí)行文件所在的路徑即可。

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

有許多不同的解決方案,結果將強烈依賴于:

您正在使用的操作系統(tǒng):Windows,Cygwin,Linux,MacOS

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

因為我發(fā)現(xiàn)了一些聲稱僅在Windows中工作的東西,但是,可能是因為我碰巧使用Cygwin,這超出了操作系統(tǒng)處理Windows路徑的方式。 其他東西只適用于基于純* nix的操作系統(tǒng)或Python2或3。

以下是我的發(fā)現(xiàn):

一般來說,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

總結

以上是生活随笔為你收集整理的python运行外部程序_在Python中运行外部程序(可执行文件)?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。