python调用Windows的cmd命令

关于python调用cmd命令:

主要介绍两种方式:

python的os模块

os模块调用CMD命令有两种方式:os.popen()os.system() 都是用当前进程来调用。

os.system是无法获取返回值的。当运行结束后接着往下面执行程序。

用法如:os.system(“ipconfig”)

import os

os.system("ipconfig")

执行结果如下:

Windows IP 配置


无线局域网适配器 无线网络连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 

以太网适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::e1c4:78dd:65a8:7bac%13
   IPv4 地址 . . . . . . . . . . . . : 192.168.180.102
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.180.1

OS.popen带返回值的,如何获取返回值。

如下:

  p = os.popen(cmd)

print p.read()   #得到的是个字符串。

import os

d = os.popen("ipconfig")
print(d.read())

执行结果如下:

Windows IP 配置


无线局域网适配器 无线网络连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 

以太网适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::e1c4:78dd:65a8:7bac%13
   IPv4 地址 . . . . . . . . . . . . : 192.168.180.102
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.180.1

这两个都是用当前进程来调用,也就是说它们都是阻塞式的。

### 如何在 Python 中执行 CMD 命令 #### 使用 `subprocess` 模块 为了更灵活地控制命令的输入和输出,推荐使用 `subprocess` 模块中的函数来执行命令。下面是一个简单的例子: ```python import subprocess # 执行 ipconfig 并捕获其输出 result = subprocess.run(["ipconfig"], capture_output=True, text=True) if result.returncode == 0: print("命令执行成功") print(result.stdout) else: print("命令执行失败") print(result.stderr) ``` 这段代码通过 `subprocess.run()` 函数运行了一个 Windows 的 `ipconfig` 命令,并且设置了参数 `capture_output=True` 来捕捉标准输出和错误流,同时设置 `text=True` 将输出作为字符串处理[^1]。 #### 使用 `os.system` 对于只需要简单执行命令而不需要获取返回数据的情况,可以考虑使用 `os.system`: ```python import os exit_status = os.system("ipconfig") if exit_status == 0: print("命令执行成功") else: print("命令执行失败") ``` 这里直接调用了系统的 shell 解释器去执行给定的命令串,但是这种方式无法方便地读取命令产生的输出[^3]。 #### 使用 `os.popen` 当既想要执行命令又希望得到它的输出时,可以选择 `os.popen` 方法: ```python import os command_result = os.popen('ipconfig').read() print(command_result) ``` 此方法会打开一个新的管道到指定命令并将结果作为一个可迭代对象返回,之后可以通过 `.read()` 获取完整的输出内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值