呼叫系統命令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開發者要面對的問題 受制於動態...