从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
相关产品推荐
相关产品推荐

