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

Windows下Python调用PowerShell命令如何捕获输出存为字符串变量

解决方案

问题根因

os.system() 仅会返回命令的退出状态码(int类型,0代表执行成功,非0代表执行异常),命令执行产生的所有输出会直接打印到控制台,不会通过返回值传递给Python变量,因此你转换类型后拿到的只是执行状态的数字,无法得到PowerShell返回的磁盘信息。

推荐实现方案

使用Python内置的subprocess模块即可实现无弹窗执行命令+捕获输出,完整可运行代码如下:

import subprocess
from subprocess import STARTUPINFO, STARTF_USESHOWWINDOW, SW_HIDE

# 配置启动信息,实现运行时不弹出黑窗
startupinfo = STARTUPINFO()
startupinfo.dwFlags |= STARTF_USESHOWWINDOW
startupinfo.wShowWindow = SW_HIDE

# 执行PowerShell命令并捕获输出
result = subprocess.run(
    ["powershell.exe", "-NoProfile", "-Command", "Get-PhysicalDisk"],
    capture_output=True,
    text=True,
    encoding="gbk",  # 中文Windows系统默认编码为gbk,出现乱码可尝试改为utf-8
    startupinfo=startupinfo,
    creationflags=subprocess.CREATE_NO_WINDOW
)

# 拿到标准输出内容,就是磁盘信息字符串
windows_info = result.stdout

# 写入文件
with open("hardDriveInfo.txt", "w", encoding="utf-8") as f:
    f.write("Hard Drive Info:\n" + windows_info)

# 测试打印
print(type(windows_info))
print(windows_info)

代码说明

  • 配置STARTUPINFO和CREATE_NO_WINDOW参数,双重保证执行PowerShell时不会弹出任何黑色窗口
  • capture_output=True 会自动捕获命令的标准输出和错误输出,分别存放在result.stdout和result.stderr中
  • text=True 直接将捕获的二进制输出转为字符串类型,不需要手动调用解码方法
  • 用with语法操作文件会自动处理关闭逻辑,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:45:00