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

从PowerShell调用Python脚本:如何传递数组或返回JSON数据?

PowerShell调用Python脚本传递数据的两种方案

方案一:逐行输出自动转为PowerShell数组

如果你的Python脚本输出是单个值占一行的格式,PowerShell会自动将这些输出转换成字符串数组,无需额外处理。

修改后的Python脚本示例

# myscript.py
import fontTools.ttLib

font = fontTools.ttLib.TTFont("font.ttf")
# 逐行打印字体信息,比如字体名称、字重等
for name in font["name"].names:
    if name.nameID == 1:
        print(name.toUnicode())
# 直接打印多个独立值,每行一个
print("Regular")
print("12pt")

PowerShell调用脚本

# 直接接收即可得到数组
$fontInfo = & python myscript.py
# 按索引访问数组元素
$fontInfo[0]
# 查看数组长度
$fontInfo.Count

如果输出存在空白行,可过滤处理:

$fontInfo = (& python myscript.py) | Where-Object { $_ -ne '' }

方案二:返回JSON格式并解析(推荐复杂场景)

如果需要传递结构化数据(比如包含多字段的字体信息对象、嵌套结构),JSON是更可靠的选择,能避免格式歧义,还能保留数据层级。

修改后的Python脚本示例

# myscript.py
import fontTools.ttLib
import json

font = fontTools.ttLib.TTFont("font.ttf")
# 构造结构化字典
fontData = {
    "familyName": None,
    "style": "Regular",
    "size": 12
}
for name in font["name"].names:
    if name.nameID == 1:
        fontData["familyName"] = name.toUnicode()

# 输出JSON字符串
print(json.dumps(fontData))

PowerShell调用并解析

# 将输出转为PowerShell自定义对象
$fontObject = (& python myscript.py) | ConvertFrom-Json
# 直接访问对象属性
$fontObject.familyName
$fontObject.style

方案对比

  • 逐行输出:适合简单单列数据,实现成本低,PowerShell自动转数组。
  • JSON解析:适合复杂结构化数据,能避免格式混乱导致的解析错误,是生产环境的推荐方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:07:41