gpt4 book ai didi

python子进程编码

转载 作者:行者123 更新时间:2023-12-02 01:03:26 25 4
gpt4 key购买 nike

我正在尝试将 powershell 的输出存储在 var 中:

import subprocess
subprocess.check_call("powershell \"Get-ChildItem -LiteralPath 'HKLM:SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall' -ErrorAction 'Stop' -ErrorVariable '+ErrorUninstallKeyPath'\"", shell=True, stderr=subprocess.STDOUT)

这样,使用 check_call ,它打印正常,例如:

显示名称:Skype™

但这样它只能打印到屏幕上,所以我必须使用
import subprocess
output = subprocess.check_output("powershell \"Get-ChildItem -LiteralPath 'HKLM:SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall' -ErrorAction 'Stop' -ErrorVariable '+ErrorUninstallKeyPath'\"", shell=True, stderr=subprocess.STDOUT)

但随后,使用 check_output ,我得到:

显示名称:SkypeT

我该如何解决这个问题?

最佳答案

输出是 bytes 类型的所以您需要使用 .decode('utf-8') 将其解码为字符串(或任何你想要的编解码器),或使用 str() , 例子:

import subprocess
output_bytes = subprocess.check_output("powershell \"Get-ChildItem -LiteralPath 'HKLM:SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall' -ErrorAction 'Stop' -ErrorVariable '+ErrorUninstallKeyPath'\"", shell=True, stderr=subprocess.STDOUT)

output_string = str(output_bytes)
# alternatively
# output_string = output_bytes.decode('utf-8')

# there are lots of \r\n in the output I encounterd, so you can split
# to get a list
output_list = output_string.split(r'\r\n')

# once you have a list, you can loop thru and print (or whatever you want)
for e in output_list:
print(e)

这里的关键是解码为您想要使用的任何编解码器,以便在打印时生成正确的字符。

关于python子进程编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49150550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com