python - Powershell 将 JSON 变量发送到 Python
问题描述
我在将 JSON 变量从 PowerShell 发送到 python 时遇到问题。
这就是我为 python 编写的代码:
import subprocess
import os
import json
firstname = 'FirstName'
lastname = 'LastName'
args2 = '-FIRSTNAME %s -LASTNAME %s' % (firstname, lastname)
test = subprocess.run([
'powershell.exe',
'Path\\Test2.ps1',
args2,
])
jsonvalue = json.loads(test)
print(jsonvalue)
这是 PowerShell 的:
Param(
[Parameter(Mandatory)][string]$FIRSTNAME,
[Parameter(Mandatory)][string]$LASTNAME
)
$result = [PSCustomObject]@{
FirstName = $FIRSTNAME
LastName = $LASTNAME
FullName = $FIRSTNAME + " " + $LASTNAME
}
return $result | ConvertTo-Json
JSON输出:
{
"FirstName": "FirstName",
"LastName": "LastName",
"FullName": "FirstName LastName"
}
我收到的错误消息是:
TypeError: the JSON object must be str, bytes or bytearray, not CompletedProcess
从我读到的内容看来,subprocess.run正在返回CompletedProcess变量类型。不幸的是,虽然我试图绕过它是行不通的。
我认为这可能很简单,但我无法自己找到答案。我对 Python 还是很陌生,连接这两种语言对于初学者来说可能有点矫枉过正,但这不是最好的学习方式吗?:D
解决方案
run
不返回包含输出的字符串;你想要stdout
返回值的属性。
test = subprocess.run(...)
jsonvalue = json.loads(test.stdout)
或者,改用该check_output
函数。
test = subprocess.check_output(...)
jsonvalue = json.loads(test)
推荐阅读
- javascript - 如何在javascript中处理大型数组而不用块处理器阻塞UI
- sql - 使用密码加密存储过程
- python - 搜索推文,“此方法需要 GET 或 HEAD。”
- python - 为特定版本的 Python 安装包时出现问题
- php - 如何在多维数组中设置POST方法然后提交?
- python - cursor.execute 在暂存文件中有效,但在主文件中无效
- elasticsearch - elasticsearch 中的部分搜索适用于一个记录,而不适用于其他记录
- python-3.x - 如何使用 HTML-requests 库查找类名包含特定字符串的所有元素?
- wordpress - 如何在没有插件的情况下将 WordPress 帖子分享到 Instagram
- oracle - APEX 基于过程创建表单