您的位置:

包含python获取命令实时输出的词条

本文目录一览:

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