python指令碼怎樣呼叫python指令碼

2021-03-04 05:26:14 字數 4090 閱讀 1318

1樓:育知同創教育

如果要呼叫另乙個python指令碼用import 檔名(不包括.py) ,就可以了,這個指令碼要在pythonpath的路徑下,如當前目錄,非常方便的。

怎樣讓python指令碼與c++程式互相呼叫

2樓:好程式設計師

二、python呼叫c/c++

1、python呼叫c動態鏈結庫

python呼叫c庫比較簡單,不經過任何封裝打包成so,再使用python的ctypes呼叫即可。

(1)c語言檔案:pycall.c

[html] view plain copy

/***gcc -o libpycall.so -shared -fpic pycall.c*/

#include

#include

int foo(int a, int b)

(2)gcc編譯生成動態庫libpycall.so:gcc -o libpycall.

so -shared -fpic pycall.c。使用g++編譯生成c動態庫的**中的函式或者方法時,需要使用extern "c"來進行編譯。

(3)python呼叫動態庫的檔案:pycall.py

[html] view plain copy

import ctypes

ll = ctypes.cdll.loadlibrary

lib = ll("./libpycall.so")

lib.foo(1, 3)

print '***finish***'

(4)執行結果:

2、python呼叫c++(類)動態鏈結庫

需要extern "c"來輔助,也就是說還是只能呼叫c函式,不能直接呼叫方法,但是能解析c++方法。不是用extern "c",構建後的動態鏈結庫沒有這些函式的符號表。

(1)c++類檔案:pycallclass.cpp

[html] view plain copy

#include

using namespace std;

class testlib

; void testlib::display()

int main()

char *reverse(char *s)

return(s);

} int main()

上述**中有兩個函式,乙個是遞迴求階乘的函式fac();另乙個reverse()函式實現了乙個簡單的字串反轉演算法,其主要目的是修改傳入的字串,使其內容完全反轉,但不需要申請記憶體後反著複製的方法。

(2)用樣板來包裝**

介面的**被稱為「樣板」**,它是應用程式**與python直譯器之間進行互動所必不可少的一部分。樣板主要分為4步:a、包含python的標頭檔案;b、為每個模組的每乙個函式增加乙個型如pyobject* module_func()的包裝函式;c、為每個模組增加乙個型如pymethoddef modulemethods的陣列;d、增加模組初始化函式void initmodule()。

怎樣用perl指令碼呼叫python指令碼並傳遞引數

3樓:du知道君

舉例:shell的指令碼:t.

sh內容:echo "this is a test shell with arguments"echo "arg1 = $1; arg2 = $2;"執行指令碼./t.

sh zhao結果如下:[noncode@gnode108 knockdown_workflow]$ ./t.

sh zhao1 zhao2this is a test shell with argumentsarg1 = zhao1; arg2 = zhao2;python指令碼:[noncode@gnode108 knockdown_workflow]$ cat t.py #!

/usr/bin/env pythonimport osimport sysdef main():print 'hello world!'if len(sys.

argv) < 2 : print "usage:%s config log" %(sys.

argv[0]) sys.exit(1)arg0 = sys.argv[0]arg1 = sys.

argv[1]print "arg0 = %s; arg1 = %s" % (arg0, arg1) print "test ./t.sh:

"os.system('./t.

sh ' + arg0 + ' ' + arg1)print "test method of replacing: "t = 't.sh'm = 'zhao'n = 'zhao'cmd = ".

/%s %s %s" % (t,m,n)print "t = %s; m = %s; n = %s; cmd = %s" % (t,m,n,cmd)os.system(cmd)if __name__ == '__main__':main()執行指令碼:

python t.py t.sh執行結果:

[noncode@gnode108 knockdown_workflow]$ python t.py t.shhello world!

arg0 = t.py; arg1 = t.shtest .

/t.sh: this is a test shell with argumentsarg1 = t.

py; arg2 = t.sh;test method of replacing: t = t.

sh; m = zhao; n = zhao; cmd = ./t.sh zhao zhaothis is a test shell with argumentsarg1 = zhao; arg2 = zhao;[noncode@gnode108 knockdown_workflow]$ cat t.

sh echo "this is a test shell with arguments"echo "arg1 = $1; arg2 = $2;"[noncode@gnode108 knockdown_workflow]$ ./t.sh zhao1 zhao2this is a test shell with argumentsarg1 = zhao1; arg2 = zhao2;說明:

兩種方法使用python指令碼呼叫shell指令碼:第一種方法:os.

system('./t.sh ' + arg0 + ' ' + arg1)注:.

/t.sh後面有乙個空格,不同的第二種方法:t = 't.

sh'm = 'zhao'n = 'zhao'cmd = "./%s %s %s" % (t,m,n)print "t = %s; m = %s; n = %s; cmd = %s" % (t,m,n,cmd)os.system(cmd)注:

在之前把字串聚合到一起。

shell指令碼裡怎樣在呼叫python時傳引數

4樓:育知同創教育

python 可以利用 sys.argv 拿到命令列上的 arguments:

$ python test.py 1 2 3

test.py:

import sys

print(sys.argv)

結果:['test.py', '1', '2', '3']

所以你在 build_using_xctool.sh 中可以這樣排程 python:

python /users/gyd/desktop/auto_send_email.py subject msg toaddrs fromaddr **tpaddr password

然後在 auto_send_email.py 中:

import sys # 自己 import sys...if __name__ == '__main__':

sendmail(*sys.argv[1:])

5樓:局詩奇友安

||是重定向嘛,

echo

'asdfadsf'

先是將'asdfadsf'輸出到標準輸出也就是螢幕然後|將echo的輸出轉到

logcat.py

作為logcat.py

的輸入,也就等於是將

'asdfadsf'

作為logcat.py的輸入引數

怎麼在python指令碼裡呼叫另python指令碼

from 指令碼名 import 若還是不能調,則把類例項化一下 f 類名 然後f.函式名 就能調了。怎麼在python指令碼裡面呼叫另外乙個帶引數的指令碼?一般情況下都是通過import指令碼,然後直接呼叫指令碼裡的函式,呼叫函式就可以直接傳遞引數 因為python並不像c語言那樣有main函式。...

怎樣在ecel中使用python指令碼

datanitro bai 1 怎樣在 duexcel中使 用zhi 如何通過html來執行python指令碼?按照你的需求,來乙個是要 自做個書籍搜尋引擎,這 bai簡單,自己建好書du籍的資料庫,用 django 的orm,根zhi據dao關鍵字模糊查詢,前端隨便用個非同步的庫,發請求非同步與後...

小白關於python的問題,小白關於python的乙個問題

試了下是可以執行的,確認一下縮排有沒有錯,建議falg 1下面加個break,python小白的問題 首先復python中不存在指標。如果非要制說有,那麼python的一切變數全是指標 比如a 1,python會在某處建立了整數1,然後把a指向這裡 open返回的一般稱為檔案物件。這就是python...