從 JSL 運行 Python 腳本我想從我的 JSL 程式碼運行 Python 腳本。 最好的方法是什麼? 謝謝
回覆:從 JSL 執行 Python 腳本更新:自 JMP 14.0(在 15.0 中得到很大改進)以來,從 JSL 運行 Python 的最佳方法現在是使用在命令 Python Init()、Python Submit() 等中實現的 JMP 介面。
更多資訊請點這裡:
https://www.jmp.com/support/help/14-2/python-integration-functions.shtml
對於支援運行 Anaconda 虛擬環境的包裝器,請檢查:
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
回覆:從 JSL 執行 Python 腳本x = RunProgram(
executable( "/path/anaconda/bin/python" ),
options( "/path/filename.py" ),
readfunction( "blob" )
);
然後執行相反的操作,從 python 腳本執行 JSL。這適用於 Mac,JMP 13.2(這是 python 而不是 jsl)
import os<BR />
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/script.jsl')
open 參數包含應用程式路徑、一個空格,然後是要開啟的路徑/檔案。
它可能很重要
//!
在腳本的第一行,這樣它就會自動運行。 然後在最後一行包含此內容
Quit();
這將關閉 os.sytem 啟動的 JMP 實例。
回覆:從 JSL 執行 Python 腳本我正在使用適用於 Oracle 11 的 Oracle 64 位元 ODBC 驅動程式與 Oracle v12 資料庫進行通訊。 我沒有看到任何像你提到的行為。 我已將其用於 JMP 11 和 12。 我們尚未完全過渡到 JMP 13; v13.1.0 修正了 V13.0 無法讀取 CLOB 的錯誤。
順便說一句,我永遠無法讓 Microsoft 提供的 Oracle ODBC 驅動程式正常運作。
祝你好運!
回覆:從 JSL 執行 Python 腳本我現在使用 ODBC 驅動程序,但它們不可靠。 我真的不認為這是 JMP,但從 JMP 12 - 13 和 oracle 11-12 切換肯定會擾亂蘋果車。 我知道必須每五個查詢關閉並重新打開資料庫連接才能使事情可靠運行。
回覆:從 JSL 執行 Python 腳本使用 ODBC 驅動程式將資料直接讀入 JMP 可能會更簡單、更快捷。 你的SQL資料庫是什麼? 我在 Oracle 方面擁有豐富的經驗,可以在這方面提供協助。
回覆:從 JSL 執行 Python 腳本使用
txt = runprogram( ... readfunction("text"));
如果 python 程式產生任何 stdout(列印語句等),它將作為 runProgram 的結果傳回 JSL。 在 Python 程式終止之前,JSL 不會繼續讀取函數(“文字”) 。 你可能想列印類似的東西
檔案名稱.dat,100
這樣JSL就可以知道該檔案中有100行資料。 或者如果資料庫不可用,則列印錯誤訊息並進行處理。
(JSL 還具有一些可能更合適的 SQL 功能@埃里克希爾)
回覆:從 JSL 執行 Python 腳本克雷格,
謝謝你的快速反應。 我想做的是打電話給
python 程式並暫停 JSL 的執行,直到 python 程式
終止。 python 程式將其輸出寫入一個文件,我將
然後透過JSL開啟並檢索。 我基本上是想用Python來
從資料庫檢索資料以供我的 JSL 程式碼使用。 順序應該
是:
1. 執行 JSL 並準備 SQL 查詢,然後將其組合在一起
建立 python 腳本。
2. 運行python程式並暫停JSL
3. 當 python 完成時,JSL 繼續,打開文件
python保存並處理它。
回覆:從 JSL 執行 Python 腳本readFunction 告訴 RunProgram 如何處理 python 程式的輸出(寫入 stdout 的資料)。 如果您提供實際的 JSL 函數,由功能函數,如您的範例所示,那麼 JSL 和 python 會獨立運行,每當 JMP 空閒時,就可以呼叫您的 JSL 函數以從 python 檢索更多輸出。 如果 python 程式永遠運行並產生無限的輸出流,這可能很有用。 此處發布的另一個範例使用讀取函數(“文字”) ,這是獲取 python 程式(當然必須終止)的所有輸出的簡單方法。 輸出作為 runProgram 函數的結果傳回。
如果您提供一個函數供 runProgram 調用,那麼您還必須將 runprogram 物件保留在 JSL 變數中,以便 JMP 和 Python 之間的連接不會很快被破壞:物件= 運行程序(...)
這這readFunction 中的參數與物件上面的變數。 它可讓您存取 runProgram 物件的方法,例如 <
編輯:寫入函數的輸出進入JMP日誌;請務必在那裡查找您的結果。
回覆:從 JSL 執行 Python 腳本我正在努力執行“運行程式”命令。 下面的行在命令提示字元中運作良好:
c:\ mycompany \ anaconda3 \ python.exe“c:\ users \ myuserid \ temp \ pythonsqltest.py”
我試圖透過執行以下腳本來運行它:
Names Default To Here( 1 );
RP = RunProgram(
Executable( "c:\mycompany\anaconda3\python.EXE" ),
Options( {"c:\users\myuserid\temp\pythonsqltest.py"} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
我想我不太理解「ReadFunction」在這裡扮演的角色。 我缺什麼?
回覆:從 JSL 執行 Python 腳本這是我正在玩的一個例子
txt=runprogram(executable("python"),options({"C:\Users\User\Desktop\tweepy\twpy2.py"}),readfunction("text"));
Tweepy 是 Twitter 的 python 套件。 此範例期望 python 程式在 JSL 繼續之前啟動、產生輸出並終止。 還有其他方法可以使用 RunProgram。
回覆:從 JSL 執行 Python 腳本使用
運行程序()
功能。
詳情請瀏覽:
幫助==>腳本索引==>RunProgram