python获取cmd输出(python读取cmd输出)

http://www.itjxue.com  2023-03-31 11:43  来源:未知  点击次数: 

python 运行cmd系统命令

eg:os.system('ls')??

这个会直接给出结果,但是没有办法进行进一步的保存和处理

2.os.popen(cmd)

eg:str = os.popen("ls").read()

a?=?str.split("\n")??

会得到['1.ini',

'XXX.txt',

'XXX.txt',

'AndroidStudioProjects']

3.使用subprocess模块

可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。

import subprocess

subprocess.call (["cmd",?"arg1",?"arg2"],shell=True)

#会直接打印出结果。

2、subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

# shell设为true,程序将通过shell来执行,如果command不是一个可执行文件,shell=True是必须的

# stdin, stdout, stderr分别表示程序的标准输入、输出、错误句柄。他们可以是PIPE,文件描述符或文件对象,也可以设置为None,表示从父进程继承。

# subprocess.PIPE实际上为文本流提供一个缓存区。

shell=True意思是shell下执行command

3. 使用模块 commands模块

import commands

如何在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如何获取cmd命令框里的内容

你的程序使用命令行参数比较好。

请看下例:

python?test.py?1

python会读取命令行参数,你可以通过sys.argv列表访问命令行参数:

import?sys

mod?=?sys.argv[1]

#?然后根据mod的不同,运行不同的代码

给你介绍一个python内置库,叫argparse。使用它,解析命令选项非常方便!

也可以使用标准输入,你的需求不建议这样做:

mod?=?raw_input('你要运行的程序:')

望采纳,谢谢支持!

(责任编辑:IT教学网)

更多

推荐其它系统文章