python如何获取cmd命令框里的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何获取cmd命令框里的内容相关的知识,希望对你有一定的参考价值。
1.我有一个程序是类似CMD窗口类型的,这个程序里有1、2、3、4、5等几个选项,我需要输入数字来选择要执行的项目,我在python里调用这个程序,并且通过python输入参数,然后我想抓取程序运行后的结果,并把它显示到IDLE的执行窗口里面,需要怎么做呢?
2.我能否通过python来读取CMD命令行里的内容,我想根据它里面的内容判断我的程序是否运行完了。
以上两个问题哪位高手帮帮忙吧,非常感谢!
你的程序使用命令行参数比较好。
请看下例:
python test.py 1python会读取命令行参数,你可以通过sys.argv列表访问命令行参数:
import sysmod = sys.argv[1]
# 然后根据mod的不同,运行不同的代码
给你介绍一个python内置库,叫argparse。使用它,解析命令选项非常方便!
也可以使用标准输入,你的需求不建议这样做:
mod = raw_input('你要运行的程序:')望采纳,谢谢支持!
是这样的,我的那个程序是个写好了的命令行窗口程序,它并不是windows自带的cmd命令行,而是类似这样的一个窗口程序,它是用来测试的,我输入数字1、2、3等等数字后,就会跑相应的测试程序,跑完后会出来结果,显示在这个窗口程序里面,我想把这里的结果抓取出来,然后让他显示在IDLE这个python 的执行窗口里。
追答抱歉我没写过窗口的程序。
参考技术A可以通过sys包的argv获取命令行参数
sys.argv是一个列表,第0项默认为文件名,接下来就是输入的参数
比如命令框中输入:
python test.py hi 27那么:
sys.argv 为 ['test.py', 'hi', '27']
使用popen运行process并打开管道 通过管道进行输入输出操作 看下subprocess的文档 不难的 给个例子:
data = subprocess.Popen (cmd, stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell = True)
li = data.stdout.readline ()追问
我试过了,可以读到cmd里的信息。那可不可以读取其他程序里的内容呢?比如,我有个类似cmd类型的程序,它叫abc.exe吧,我想读它里面的内容,能否将上面的参数‘cmd’改为abc.exe呢?还是说有其他的方法?
追答没有问题的 它其实是把程序的输出stdout定向给管道
追问读是读到了,但好像每次运行完电脑都变得很卡的样子!非常感谢你的帮助。
本回答被提问者采纳python cmd命令调用
关于python调用cmd命令:
主要介绍两种方式:
1.python的OS模块。
OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用。
os.system是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:OS.system("ipconfig").
OS.popen带返回值的,如何获取返回值。如
p=os.popen(cmd)
print p.read().得到的是个字符串。
这两个都是用当前进程来调用,也就是说它们都是阻塞式的。
2.管道subprocess模块。
运行原理会在当前进程下面产生子进程。
sub=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
sub.wait()
print sub.read()
以上是关于python如何获取cmd命令框里的内容的主要内容,如果未能解决你的问题,请参考以下文章