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 パッケージ関数
jmpをインポートするパッケージは、PythonスクリプトとJMP内部とのインターフェース層です。Python スクリプトインデックスにカテゴリが追加されました。このセクションでは、PythonからJMPを操作するためのドキュメントと例を提供します。Python統合は現在も開発中です。JMP 18は、パッケージのインストール、データテーブルの連携、JMPとPython間のデータ転送など、必要最低限の機能に重点的に取り組んでいます。JMP 19では、データテーブル列のサポート追加、データフレームとの連携強化、JMP -> Python、Python -> JMPデータ型のサポート強化、その他新機能が追加され、機能が拡張されています。
ご回答いただいた皆様、ありがとうございました。おかげさまで、目的のテーブルを「開く」ことができました。私が考案した方法を使ってjmpテーブルを開き、列エントリをサードパーティのウェブサイトにエクスポートして、各列エントリに関連するページからデータを抽出できる方のために、私が作成したPythonコードの一般的な形式を以下に示します。ログから抽出するのではなく、出力をjmpテーブルに直接ロードできるようにまだ取り組んでいますが、ログから抽出することで編集が可能になります。
jmpをインポートする
セレンからWebDriverをインポートする
selenium.webdriver.common.by からインポート
selenium.webdriver.chrome.options からオプションをインポートする
selenium.webdriver.support.ui から WebDriverWait をインポートします
selenium.webdriver.support から expected_conditions を 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.抽出元のウェブページ'
試す:
# URLを開く
ドライバー.get(url)
# ページの読み込みを待つために短いタイムアウト(例:5秒)を設定します
WebDriverWait(driver, 5).until(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を返す
TimeoutExceptionを除く:
print(f"YOUR_COLUMN {YOUR_COLUMN} のタイムアウト エラー: 指定された時間内に URL が読み込まれませんでした。")
return None, None # URLが読み込まれない場合はNoneを返します。あなたのタグ
except Exception を e として:
print(f"YOUR_COLUMN {YOUR_COLUMN} の YOUR TAGS を抽出中にエラーが発生しました: {e}")
None、Noneを返す
# 各行を反復処理する
YOUR_OUTPUT = get_YOUR_OUTPUT(YOUR_COLUMN)
results.append((YOUR_OUTPUT)) # 結果をタプルとして保存する
# 結果を印刷する
print(f"YOUR_COLUMN: {YOUR_COLUMN} -> YOUR_TAG: {YOUR_NEW_DATA})
# すべてのエントリを処理した後、WebDriver を閉じます
ドライバー.quit()
結果が得られたら、それをデータ テーブルに直接入力する方法は複数あります。
表内の特定のセルの値を設定するには
dt['col_name'][ row# ] = value
Pythonではインデックスは0から始まりますが、JSLでは1から始まります。つまり、Pythonの最初の行はdt['col'][0]です。
またはリストから列全体を一度に設定
dt['col'] = results
上記の場合、結果の長さはデータテーブルの行数と一致する必要があります。len(results) == dt.nrows
また、dt のデータ型はリストの要素のデータ型と一致する必要があり、リストの要素はすべて同じ型である必要があります。
新しいデータ テーブルや新しい列、行も Python から作成できます。