我有興趣爲我在Linux上使用的現有命令行實用程序編寫python綁定或封裝器,以便可以在我的python程序中訪問其功能。有沒有一個標準的方法來做到這一點,有人可以指點我?如何爲命令行應用程序編寫Python綁定
目前,我已經將命令行可執行程序包裝在subprocess.Popen調用中,該調用工作但感覺非常脆弱,我希望使雙方之間的集成更加穩定,以便它可以工作不是我自己的電腦!
我有興趣爲我在Linux上使用的現有命令行實用程序編寫python綁定或封裝器,以便可以在我的python程序中訪問其功能。有沒有一個標準的方法來做到這一點,有人可以指點我?如何爲命令行應用程序編寫Python綁定
目前,我已經將命令行可執行程序包裝在subprocess.Popen調用中,該調用工作但感覺非常脆弱,我希望使雙方之間的集成更加穩定,以便它可以工作不是我自己的電腦!
如果您必須使用命令行界面,那麼subprocess.Popen是您最好的選擇。請記住,您可以使用shell = True讓它選擇路徑變量,您可以使用os.path.join來使用依賴於操作系統的路徑分隔符等。
但是,如果您的命令行實用程序具有共享庫,請在ctypes中,它允許您直接連接到這些庫並直接公開功能。
一種方法是
重因素的命令行實用程序,使命令行操作分離和實際功能公開爲共享檔案。
然後你可以使用cython公開這些函數。
在python中編寫你的完整命令行工具,利用這些函數。
雖然這使分配困難。
你在做什麼仍然是最好的方法。
您應該首先檢查其他人是否已經爲您執行了某些步驟 - 特別是步驟1 – 2010-11-04 20:58:37
不幸的是,命令行實用程序不是我的,它只是一個我使用了很多,並且想用於我的應用。如果可能的話,我想爲Python貢獻一個綁定,但只是不確定如何去做這些。 – 2010-11-04 21:47:14
@Richard J:使用庫方法可以更好地創建綁定。 cython,ctypes等。但是你沒有訪問權限,那麼你將不得不依賴外部命令執行的方法 - subprocess.Popen。 – pyfunc 2010-11-04 22:02:46
假設該實用程序安裝在跨計算機的相同位置,在其他計算機上工作的方法應該沒有任何問題。如果沒有,那麼這是一個超出Python綁定範圍的問題。 – rossipedia 2010-11-04 20:39:17