本文目錄一覽:
python如何實時獲取命令行執行的輸出
問題不是很清楚,是否是執行一個linux命令,然後Python 需要獲得這個命令的輸出?
如果是的話,你可以通過管道流的方式實現。
如何在Python中執行DOS命令
關於python調用cmd命令,主要介紹兩種方式:
一、Python的OS模塊
OS模塊調用CMD命令有兩種方式:os.system(),os.popen()。 都是用當前進程來調用。
1、os.system()
a、簡單粗暴的執行cmd指令
b、返回結果為0表示執行成功,無法獲取命令輸出的內容,本在cmd輸出的內容會直接在控制台輸出。
c、當命令運行結束後接著往下面執行程序(同步阻塞式)。用法如:os.system(“ipconfig”)。
2、os.popen()
a、能獲取DOS命令輸出的內容。
b、os.popen()返回的是一個file對象,那麼可以跟打開文件一樣操作,r是以讀的方式打開。
c、當命令運行結束後接著往下面執行程序(同步阻塞式)。
注意:os.popen() 方法用於從一個命令打開一個讀寫管道,在Unix,Windows中有效。
用法如:
with os.popen(r”adb devices”,”r”)as f:
text = f.read()
print(text)# cmd輸出結果
二、管道subprocess模塊
a、在當前進程下產生子進程。
b、用wait()函數等待結果(非同步非阻塞式)。
【方法1】
result = subprocess.check_output(r’adb devices’) ## 命令執行的輸出結果放到了result里
print(result)
【方法2】
process = subprocess.Popen(r’adb devices’,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
command_output = process.stdout.read().decode(‘gbk’)
print(command_output)
Notices:
有些命令行是非同步執行的不會馬上返回輸出,所以有時候我們要先等這個命令行執行完畢才能從stdout讀出來數據。這個時候要加上
process.wait()
我的GitHub
python 執行過終端命令後 怎麼獲取終端命令的輸出
# -*- coding:utf-8 -*-
__author__ = ‘lpe234’
__date__ = ‘2014-12-29’
from subprocess import Popen, PIPE
resp = Popen(‘ls -l’, stdout=PIPE)
print resp.stdout.read()
輸出:
C:\Python27\python.exe D:/11/cs_test/test/ping_ip.py
total 49
-rw-r–r– 1 LENOVO Administ 345 Nov 2 03:06 Student.py
-rw-r–r– 1 LENOVO Administ 77312 Nov 2 02:08 ex.xls
-rw-r–r– 1 LENOVO Administ 353 Nov 20 22:58 for_4.py
-rw-r–r– 1 LENOVO Administ 2153 Oct 25 19:08 order.py
-rw-r–r– 1 LENOVO Administ 176 Dec 29 22:43 ping_ip.py
-rw-r–r– 1 LENOVO Administ 9976 Nov 2 12:49 s.txt
-rw-r–r– 1 LENOVO Administ 1448 Sep 21 20:33 szsy.py
-rw-r–r– 1 LENOVO Administ 796 Sep 21 21:19 szsy_2.py
-rw-r–r– 1 LENOVO Administ 2269 Nov 2 12:49 xls.py
Process finished with exit code 0
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150354.html