python如何获取cmd命令框里的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何获取cmd命令框里的内容相关的知识,希望对你有一定的参考价值。

1.我有一个程序是类似CMD窗口类型的,这个程序里有1、2、3、4、5等几个选项,我需要输入数字来选择要执行的项目,我在python里调用这个程序,并且通过python输入参数,然后我想抓取程序运行后的结果,并把它显示到IDLE的执行窗口里面,需要怎么做呢?
2.我能否通过python来读取CMD命令行里的内容,我想根据它里面的内容判断我的程序是否运行完了。
以上两个问题哪位高手帮帮忙吧,非常感谢!

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

请看下例:

python test.py 1


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

import sys
mod = 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']

参考技术B

使用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命令框里的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何获取C++中文本输入框的内容

easyui里的dialog如何调用弹出框里的方法????

用qt设置的编辑框,如何获取编辑框里输入的信息

如何在html添加一个搜索框和一个按钮?点击按钮,就搜索到框里的内容

python tkinter 如何获取文本框中的内容?

js怎样将一个文本框里的时间设成某日期的一个月后