Python的呼叫程式

2022-03-16 10:19:04 字數 2157 閱讀 2650

呼叫系統命令ping 判斷區域網內有哪些主機存活

假設你用c語言寫了乙個演算法,需要對該演算法進行測試。測試的資料集幾百個。這時可以使用過gcc生成test.exe,再使用python批量呼叫該exe去測試資料集。

簡而言之,就是python需要呼叫系統程式或者其他程式。

os.system

os.popen

subprocess

假設有乙個test.exe,返回值為0或者1.呼叫後,在視窗會顯示test.exe中printf的資訊,並且返回值為0或者1.呼叫系統程序類似。這個方法的缺點很明顯,返回值中沒有包含想要的內容,比如下面的ping結果。

>>> os.system("ping 192.168.1.1")

正在 ping 192.168.1.1 具有 32 位元組的資料:

來自 192.168.1.1 的回覆: 位元組=32 時間<1ms ttl=64

來自 192.168.1.1 的回覆: 位元組=32 時間<1ms ttl=64

來自 192.168.1.1 的回覆: 位元組=32 時間<1ms ttl=64

來自 192.168.1.1 的回覆: 位元組=32 時間<1ms ttl=64

192.168.1.1 的 ping 統計資訊:

資料報: 已傳送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),

往返行程的估計時間(以毫秒為單位):

最短 = 0ms,最長 = 0ms,平均 = 0ms

0

這個方法可以返回filelike的結果,使用檔案的讀方法可以得到有效資訊,但是沒有程式的返回值。

>>> s = os.popen("ping 192.168.1.1")

>>> s.read()

'\n正在 ping 192.168.1.1 具有 32 位元組的資料:\n來自 192.168.1.1 的回覆: 位元組=32

時間<1ms ttl=64\n來自 192.168.1.1 的回覆: 位元組=32 時間=4ms ttl=64\n來自 192.168.

1.1 的回覆: 位元組=32 時間<1ms ttl=64\n來自 192.168.1.1 的回覆: 位元組=32 時間<1ms t

tl=64\n\n192.168.1.1 的 ping 統計資訊:\n 資料報: 已傳送 = 4,已接收 = 4,丟失

= 0 (0% 丟失),\n往返行程的估計時間(以毫秒為單位):\n 最短 = 0ms,最長 = 4ms

,平均 = 1ms\n'

>>>

這個模組的功能比較強大,同時使用起來也比較複雜。官方說法是用來替代os.system的。在the python standard library17.5章節。

基本上包含了上面兩個方法的功能。

import

subprocessa=

subprocess

.run

("ping 192.168.1.1"

,stdout

=subprocess

.pipe)a

.stdout

.decode

("gb2312")a

.returncode

上面的模組既可以返回程式(程序)的返回結果,又可以返回標準列印資訊。

>>> a.stdout.decode("gb2312")

'\r\n正在 ping 192.168.1.1 具有 32 位元組的資料:\r\n來自 192.168.1.1 的回覆: 位元組=

32 時間<1ms ttl=64\r\n來自 192.168.1.1 的回覆: 位元組=32 時間<1ms ttl=64\r\n來自 1

92.168.1.1 的回覆: 位元組=32 時間<1ms ttl=64\r\n來自 192.168.1.1 的回覆: 位元組=32

時間<1ms ttl=64\r\n\r\n192.168.1.1 的 ping 統計資訊:\r\n 資料報: 已傳送 = 4,

已接收 = 4,丟失 = 0 (0% 丟失),\r\n往返行程的估計時間(以毫秒為單位):\r\n 最

短 = 0ms,最長 = 0ms,平均 = 0ms\r\n'

>>> a.returncode

0>>>

python呼叫其他程式 python呼叫其他程式

在python中可以方便地使用os模組執行其他的指令碼或者程式,這樣就可以在指令碼中直接使用其他指令碼,或者程式提供的功能,而不必再次編寫實現該功能的 為了更好地控制執行的程序,可以使用win32process模組中的函式。如果想進一步控制程序,則可以使用ctype模組,直接呼叫kernel32.d...

matlab呼叫python程式

執行命令 pyversion filepath 若已關聯,則不需要執行此命令,其中 filepath 為 python 程式所用的直譯器的絕對路徑,如 d anaconda3 python.exe。詳見pyversion官方文件 例如呼叫某python函式 data2mat.getdata cd p...

Python呼叫C程式

目錄 python呼叫c程式的意義 呼叫示例 編寫c程式 編譯c程式 呼叫 我們知道,python具有編寫開發快 程式可讀性良好 支援物件導向的特點。種類繁多的python原生庫和第三方框架使python承擔越來越多的任務。但是python自身的缺陷也確實是python開發者要面對的問題 受制於動態...