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

如何捕获Python help()输出并赋值变量?以PyMeasure为例

获取PyMeasure支持的设备包列表的解决办法

你想核查PyMeasure支持的设备,需要提取pymeasure.instruments下的子包列表,但直接用help("pymeasure.instruments")赋值时总是得到None——这是因为help()函数只负责向控制台输出内容,不会返回任何有效数据,所以变量接收的就是默认的None。

下面提供两种可行的解决方法:

方法一:捕获并解析help输出

通过重定向标准输出,把help()的内容捕获下来,再提取出PACKAGE CONTENTS部分的内容:

import sys
from io import StringIO

# 保存原标准输出,替换为内存对象
old_stdout = sys.stdout
captured_output = StringIO()
sys.stdout = captured_output

# 执行help命令
help("pymeasure.instruments")

# 恢复原标准输出
sys.stdout = old_stdout

# 解析捕获的内容
full_content = captured_output.getvalue()
# 定位PACKAGE CONTENTS和FILE之间的区域
start_idx = full_content.find("PACKAGE CONTENTS") + len("PACKAGE CONTENTS")
end_idx = full_content.find("FILE")
package_section = full_content[start_idx:end_idx].strip()

# 提取每个包名,去掉(package)标记
instrument_list = [line.strip().split()[0] for line in package_section.split("\n") if line.strip()]

print(instrument_list)

方法二:直接扫描包结构(更可靠)

不需要解析文本,直接通过Python的包工具扫描pymeasure.instruments的子模块/子包,这种方法更稳定,不受help输出格式变化影响:

import pkgutil
import pymeasure.instruments

supported_devices = []
# 遍历instruments包下的所有子模块和子包
for _, module_name, is_package in pkgutil.iter_modules(pymeasure.instruments.__path__):
    supported_devices.append(module_name)

print(supported_devices)

运行后就能得到所有PyMeasure支持的设备包列表,用来核查目标设备是否在列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:05:16