我正在使用来自 python 的 powershell 命令获取一些数据,而 Windows 中没有 cmd!如何将此输出分配给字符串变量?

Posted

技术标签:

【中文标题】我正在使用来自 python 的 powershell 命令获取一些数据,而 Windows 中没有 cmd!如何将此输出分配给字符串变量?【英文标题】:I am getting some data using powershell command from python without having a cmd in windows! how can i assigned this output to a string variable? 【发布时间】:2021-12-13 07:47:31 【问题描述】:

我正在使用来自 python 的 PowerShell 命令获取一些数据,而该命令在 windows 中没有 cmd!

import os
windows_info = os.system('powershell.exe get-physicaldisk')

它正在成功运行。但是这个输出给出了一个'int'输出!我试图通过使用将其转换为字符串,

windows_infoEG = str(windows_info)

但是当我尝试打印它时它不会打印任何东西(但是当我检查它的类型时它会显示“str”)。如何将其转换为字符串以便将输出写入文本文件!

这是我的全部代码。

 import os
    
    windows_info = os.system('powershell.exe get-physicaldisk')
    print(type(windows_info)) 
    
    windows_infoEG = str(windows_info)
    print(type(windows_infoEG)) 
    
    print(windows_infoEG)
    
    f = open("hardDriveInfo.txt", "w")
    f.write("Hard Drive Info" + windows_infoEG)
    f.close()

谢谢!

【问题讨论】:

【参考方案1】:

os.system 返回进程的“退出代码”(通常为 0 表示成功,非零表示失败)。这就是为什么你得到一个整数。它不会将命令的标准输出返回给您。为此,您需要 subprocess 模块。

windows_info = subprocess.check_output(['powershell.exe','get-physicaldisk']).decode('utf-8')

【讨论】:

我想添加一个指向os.system 文档的链接:“subprocess 模块为生成新进程和检索其结果提供了更强大的工具;使用该模块比使用这个函数。” 嗯,比这更复杂。 os.system 有一个有用的目的。一个问题是“结果”一词含糊不清。 os.system 确实返回进程的“结果”,但如果你想挂钩标准输入和标准输出,它不是正确的工具。

以上是关于我正在使用来自 python 的 powershell 命令获取一些数据,而 Windows 中没有 cmd!如何将此输出分配给字符串变量?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 运行 CMD 命令,打印输出并将输出作为变量获取

PowerShe 使用证书签名 ll脚本

PowerShe 命令行调试指引(转)

sql Powershell Migration工具http://stackingcode.com/blog/2011/10/12/database-migrations-with-powershel

在 Excel 中访问数据 - 来自 python 的路透社

来自装饰器的 Python 导入模块