python如何呼叫編譯後的可執行檔案
阿新 • • 發佈:2019-01-10
本人計算機萌新一枚,從今天開始寫點平時遇到的問題,可能只是一個解決辦法或者一些小小的感悟。或許研究得沒那麼深入,但也希望能夠分享一些自己的經驗。可能格式或者某些說法有些錯誤,望指正,謝謝。
前情提要
在工作的時候,對方發了一個寫好並且編譯好的包,linux版本下lib資料夾裡全是.a檔案(靜態連結庫),bin資料夾是編譯好的可執行檔案,但是我重構程式碼時使用的python,並不知道如何通過該檔案呼叫對方給的介面。因為對方給的不是.so檔案(動態連結庫),不然我就能夠通過os庫直接進行呼叫了。
解決方式
我是通過python呼叫shell指令碼執行可執行檔案的介面實現對方給的功能。簡單講就是,寫了個shell指令碼執行可執行檔案,並傳入引數,實現功能。之後再通過python呼叫指令碼來實現這個功能。
詳細過程
-可執行檔案介面
-shell指令碼
-python呼叫shell指令碼
可執行檔案介面
使用例項
./檔名 './輸入檔名.jpg' './輸出檔名.jpg' 123#最後一項為引數
shell指令碼
因為過了兩天了,記不清了,貌似是在這個過程中因為許可權的問題需要到root下進行。(過兩天查下資料測試一下,做修改)
首先進入root許可權,然後新建一個shell指令碼,再通過vim進行編寫,同時在呼叫可執行檔案的同時記得傳入引數。
sudo su
cd /usr/local
touch test.sh
vim test.sh
#!/bin/bash/
絕對路徑/可執行檔名 $1 $2 $3
python呼叫shell指令碼
通過呼叫os以及sys庫,實現呼叫shell指令碼和傳入引數的功能
touch test.py
vim test.py
#!/usr/bin/python
##!/usr/bin/python
import os
import sys
def main():
arg0 = sys.argv[1]
arg1 = sys.argv[2]
arg2 = sys.argv[3]
os.system('/root/桌面 ' + arg0 + ' ' + arg1 + ' ' + arg2)
if __name__ == '__main__':
main()
在終端輸入以下程式碼:
test.py './輸入檔名.jpg' './輸出檔名.jpg' 123