You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将CMD命令执行结果存入变量?

在Python中捕获CMD命令执行结果到变量

直接用subprocess模块就行,这是Python官方推荐的替代os.system、os.popen的工具,能轻松捕获命令的输出内容。下面是你要的封装实现:

封装调用函数

import subprocess

def command(cmd):
    # 执行命令并捕获输出
    result = subprocess.run(
        cmd,
        shell=True,
        capture_output=True,
        encoding='cp936'  # Windows CMD默认编码是cp936,避免乱码
    )
    # 返回命令的标准输出,去掉首尾空白
    return result.stdout.strip()

调用示例

捕获arp命令输出

arp_inf = command('arp -a 192.168.100.1')
print(arp_inf)
# 输出类似:
# Interface: 192.168.100.100 --- 0x3
#   Internet Address      Physical Address      Type
#   192.168.100.1         xx-xx-xx-xx-xx-xx     dynamic

捕获tasklist命令输出

task_info = command('tasklist')
print(task_info)
# 输出所有进程的列表信息

关键参数说明

  • shell=True:让系统通过shell(Windows就是CMD)执行命令,支持带参数的复杂命令
  • capture_output=True:同时捕获标准输出(stdout)和错误输出(stderr)
  • encoding='cp936':指定编码格式,解决Windows下中文乱码问题

处理命令执行错误

如果命令执行失败(比如输错命令),可以通过result.stderr查看错误信息:

def command_with_error(cmd):
    result = subprocess.run(
        cmd,
        shell=True,
        capture_output=True,
        encoding='cp936'
    )
    if result.returncode != 0:
        return f"命令执行出错:{result.stderr.strip()}"
    return result.stdout.strip()

# 测试错误情况
print(command_with_error('arp -x 192.168.100.1'))

之前用os模块没生效,是因为os.system只能返回命令的退出码,没法捕获输出;os.popen虽然能捕获,但功能有限且官方已不推荐使用,subprocess是更安全、灵活的选择。

内容的提问来源于stack exchange,提问作者GuiNobre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:15:29