Python获取CMD命令输出及错误信息

4星 · 超过85%的资源 需积分: 9 20 下载量 153 浏览量 更新于2024-09-15 收藏 3KB TXT 举报
这篇内容主要介绍了如何在Python中获取CMD(命令提示符)的输出结果,特别是在Windows和Linux系统中执行命令并捕获其输出的方法。 首先,Python的`subprocess`模坓是用于创建新的进程、连接到它们的输入/输出/错误管道,并获取它们的返回码的首选方法。在示例中,`Popen`函数被用来启动一个子进程,它接收一个命令字符串`cmd`。`shell=True`参数表示我们希望在命令提示符环境下执行这个命令。`stdout`和`stderr`参数分别指定子进程的标准输出和标准错误流应被重定向到`PIPE`,这样我们就可以通过`readlines()`方法读取这些输出。`close_fds=True`确保所有打开的文件描述符在子进程启动后都会被关闭,这是一个良好的安全实践。 在给出的例子中,`ipconfig -all`命令被用于获取Windows系统的网络配置信息。`Popen`函数返回一个`Popen`对象,它的`stdout`和`stderr`属性可以用来获取命令的输出。`child_stdin`和`child_stdout`被赋值为子进程的输入和输出流,然后通过`readlines()`读取所有行。 对于Linux系统,通常不使用shell脚本执行命令,而是直接传递命令和参数列表给`Popen`。例如,我们可以用`['ls', '-l']`来代替`'ls -l'`,因为Linux的命令解析器不会自动处理空格或特殊字符。 此外,提到了`os`和`commands`模块。`commands.getstatusoutput(cmdstr)`在旧版本的Python中用于执行命令并获取状态和输出,但它在Python 3中已被废弃,推荐使用`subprocess`模块的替代方法。`getstatusoutput`会返回一个包含命令退出状态和输出字符串的元组,这对于检查命令是否成功执行以及处理其输出非常有用。 最后,代码中还涉及到检查命令执行的状态。`os.WIFEXITED(status)`和`os.WEXITSTATUS(status)`是用来判断进程是否正常退出以及其退出状态码。如果命令执行失败,可以根据退出状态码进行相应的错误处理。 这段代码展示了如何在Python中跨平台地获取命令行工具的输出,这对于自动化脚本和系统管理任务非常有用。