在 JMP Python 脚本编辑器中,“import jmp”后面的代码指向我想用代码读写的已打开的 JMP 表,是什么?我以为 JMP Python 脚本应该很简单,而且很“原生”。结果却显示“没有打开的表”。
脚本索引和脚本指南确实有这方面的例子

import jmp
jmp.open(jmp.SAMPLE_DATA + 'Big Class.jmp')
print(jmp.current())
脚本指南 > Python > 使用 JMP 数据表 > 使用运算符测试 JMP 对象(并非最佳示例)
脚本指南 > Python > Python 语法参考 > jmp 包函数
导入跳转包是 Python 脚本和 JMP 内部函数之间的接口层。完整的Python 类别已添加到脚本索引。本节提供从 Python 与 JMP 交互的文档和示例。Python 集成工作仍在持续进行中。JMP 18 主要关注最低限度的必要功能集,例如软件包安装、数据表交互以及 JMP 与 Python 之间的数据传输。JMP 19 在此基础上进行了扩展,增加了对数据表列的支持、与数据框的更好交互、新增了 JMP -> Python、Python -> JMP 数据类型支持以及其他新功能……
感谢那些回复帮助的人。我确实成功“打开”了我想要的表格。对于那些可能能够使用我的方法打开跳转表,然后将列条目导出到第三方网站以从与每个列条目相关的页面中提取数据的人,这里是我编写的Python代码的通用形式。我仍在努力将输出直接加载回跳转表,而不是从日志中提取,尽管这种日志提取确实允许编辑。
导入跳转
从 selenium 导入 webdriver
从 selenium.webdriver.common.by 导入
从 selenium.webdriver.chrome.options 导入选项
从 selenium.webdriver.support.ui 导入 WebDriverWait
从 selenium.webdriver.support 导入预期条件作为 EC
从 selenium.common.exceptions 导入 TimeoutException
# 设置 Selenium WebDriver
选项=选项()
options.headless = False # 以可见模式运行 Safari 进行调试
# 初始化 WebDriver(Safari)
驱动程序 = webdriver.Safari()
# JMP 文件的路径(调整为您提供的路径)
file_path =“/你的JMP路径.jmp”
# 通过文件路径打开特定的表
dt = jmp.open(file_path) # 直接从文件打开表
# 从打开的表中访问“YOUR_COLUMN”列
YOUR COLUMN_column = dt["YOUR COLUMN"] # 访问列的正确语法
# 初始化一个列表来存储结果(您的新列)
结果 = []
# 提取您的数据的功能:
url = f' https://www.YOUR WEB PAGE TO EXTRACT FROM'
尝试:
# 打开 URL
驱动程序.get(url)
# 设置短暂的超时时间(例如 5 秒)来等待页面加载
WebDriverWait(驱动程序,5).直到(EC.presence_of_element_located((By.XPATH,“//a[contains(@href,'YOUR_KEY')]”)))
# 调整 XPath 以获取正确的链接(例如,获取第一个匹配)
YOUR_tag = driver.find_element(By.XPATH, "//a[contains(@href, 'YOUR_KEY') and not(contains(@href, 'access'))]") # 排除 'access' 相关链接
YOUR_KEY = YOUR_TAG.text.strip() # 提取 YOUR KEY 的文本
返回 YOUR_OUTPUT
除超时异常外:
print(f"YOUR_COLUMN {YOUR_COLUMN} 超时错误:URL 未在指定时间内加载。")
返回 None, None # 如果 URL 未加载,则返回 None 您的标签
except 异常为 e:
print(f"提取 YOUR_COLUMN {YOUR_COLUMN} 的 YOUR TAGS 时出错:{e}")
返回 None,None
# 迭代每一行
您的输出 = 获取您的输出(您的列)
results.append((YOUR_OUTPUT)) # 将结果存储为元组
# 打印结果
打印(f“YOUR_COLUMN:{YOUR_COLUMN} -> YOUR_TAG:{YOUR_NEW_DATA})
# 处理完所有条目后关闭 WebDriver
驱动程序.退出()
您获得了结果,有多种方法可以将其直接放入数据表中。
设置表中的特定单元格值
dt['col_name'][ row# ] = value
记住,Python 中的索引是从零开始的,而 JSL 中的索引是从一开始的。所以 Python 中的第一行是 dt['col'][0]
或者从列表中一次设置一整列
dt['col'] = results
上述结果的长度必须与数据表的行数匹配, len(results)==dt.nrows
此外,dt 的数据类型必须与列表元素的数据类型相匹配,并且所有元素必须属于同一类型。
可以从 Python 创建新的数据表,也可以创建新的列和行。