我正在使用来自 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 命令,打印输出并将输出作为变量获取
sql Powershell Migration工具http://stackingcode.com/blog/2011/10/12/database-migrations-with-powershel