1. 程式人生 > >python如何呼叫編譯後的可執行檔案

python如何呼叫編譯後的可執行檔案

本人計算機萌新一枚,從今天開始寫點平時遇到的問題,可能只是一個解決辦法或者一些小小的感悟。或許研究得沒那麼深入,但也希望能夠分享一些自己的經驗。可能格式或者某些說法有些錯誤,望指正,謝謝。

前情提要

在工作的時候,對方發了一個寫好並且編譯好的包,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