python調用python
㈠ python中怎麼調用自己的方法
C/C++對Python的調用層次可以分為三個層次, (1) 高層次的調用, (2)純Python調用, (3) Python方法的擴展(也就使向Python輸出調用函數). 這里我主要討論(1)和(2)兩種方法.
1 高層次的調用
這是最簡單的一種在C/C++中調用Python的方法. 它直接的調用Python提供的C調用介面函數, 這些函數主要有: PyRun_SimpleString(), PyRun_SimpleStringFlags(), PyRun_SimpleFile(), PyRun_SimpleFileEx()和PyRun_SimpleFileExFlags()幾個. 函數的具體用法參考Python的文檔.
這里舉個例子來說明這種層次的用法:
由這個例子可見, 在C/C++中調用Python的內容非常簡單, 只要構造一個簡單的Python調用字元串.這里要注意的就是, Python調用串語句之間要用'/n'來分開, 且語句之間不能有空格, 如上面的Python字元串不能寫成: "import sys/n print sys.path" , 否則要出錯的.
// c/c++ 中 Python 調用必須的頭文件
#include <Python.h>
//
int main(int argc, char* argv[])
{
// 初始化Python解析環境
Py_Initialize();
// 構造Python執行腳本
char szPyScript[128];
sprintf(szPyScript, "import sys/nprint sys.path");
if(PyRun_SimpleString(szPyScript) != 0)
{
sprintf(stderr, "execute /'%s/'failed!", szPyScript);
return -1;
}
// 清除Python解析環境
Py_Finalize();
}
//
//
以上的例子也表明了在C/C++中調用Python的基本結構, 就是
(1) 先初始化Python環境然: Py_Initialize()
(2) 具體對Python的操作
(3) 清除Python環境
更復雜的一個使用高層調用的例子, 這個例子用PyRun_SimpleFile的例子.
這里值得注意是, 在Window中:
(1) 鏈接debug版本的時候會自動鏈接PythonXX(_d).lib庫, PythonXX_d安裝時是沒有安裝的, 所以要顯示的指定鏈接PythonXX.lib庫, 不知道VC6.0為什麼還會去找PythonXX_d.lib, 在vs7.0不會.
(2) 編譯時要以 /MD(多線程DLL) 選項編譯(不論時debug版本還時release版本都一樣).
以上我在VC7.0中可以正確的運行, 在VC6.0這樣還不行, 可能和我使用的版本有關系(我用的版本是:Python24.lib). 有知道的請賜教!!
// c/c++ 中 Python 調用必須的頭文件
#include <Python.h>
//
int main(int argc, char* argv[])
{
// 初始化Python解析環境
Py_Initialize();
//
char szFile[] = "PyFile.py";
//sprintf(szPathFile, "%s//%s", szPath, szFile);
FILE* fp = fopen(szFile, "r");
if(PyRun_SimpleFile(fp, szFile) != 0)
{
fclose(fp);
sprintf(stderr, "PyRun_SimpleFile(%s) failed!", saFile);
return -1;
}
fclose(fp);
// 清除Python解析環境
Py_Finalize();
}
2 純Python調用
㈡ python的執行方式
python的代碼可以在交互模式下執行,也可以在命令行下執行。python的程序即.py文件,在命令行中輸入python+.py文件,回車,即可運行程序。
㈢ python如何使用import調用python文件
假如你要包含的python文件名叫aa.py
那麼直接import aa就好,另外確認這個aa.py在你的python文件同一目錄或者是pythonpath裡面
㈣ 怎麼調用編寫好的python程序
1 使用os.system函數運行其他程序
2 使用ShellExecute函數運行其他程序
3 使用CreateProcess函數運行其他程序
4 使用ctypes調用kernel32.dll中的函數
1 使用os.system函數運行其他程序
os模塊中的system()函數可以方便地運行其他程序或者腳本。其函數原型如下所示。
os.system(command) 其參數含義如下所示。
command 要執行的命令,相當於在Windows的cmd窗口中輸入的命令。如果要向程序或者腳本傳遞參數,可以使用空格分隔程序及多個參數。
以下實例實現通過os.system()函數打開系統的記事本程序。
>>> import os # 使用os.system()函數打開記事本程序 >>> os.system('notepad') 0 # 關閉記事本後的返回值 # 向記事本傳遞參數,打開python.txt文件 >>> os.system('notepad python.txt')
>>> import os # 使用os.system()函數打開記事本程序 >>> os.system('notepad') 0 # 關閉記事本後的返回值 # 向記事本傳遞參數,打開python.txt文件 >>> os.system('notepad python.txt')
2 使用ShellExecute函數運行其他程序
除了使用os模塊中的os.system()函數以外,還可以使用win32api模塊中的ShellExecute()函數。其函數如下所示。
ShellExecute(hwnd, op , file , params , dir , bShow )
其參數含義如下所示。
hwnd:父窗口的句柄,如果沒有父窗口,則為0。
op:要進行的操作,為「open」、「print」或者為空。
file:要運行的程序,或者打開的腳本。
arams:要向程序傳遞的參數,如果打開的為文件,則為空。
dir:程序初始化的目錄。
Show:是否顯示窗口。
以下實例使用ShellExecute函數運行其他程序。
>>> import win32api # 打開記事本程序,在後台運行,即顯示記事本程序的窗口 >>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',0)
# 打開記事本程序,在前台運行 >>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',1)
# 向記事本傳遞參數,打開python.txt >>> win32api.ShellExecute(0, 'open', 'notepad.exe', 'python.txt','',1)
# 在默認瀏覽器中打開http://www.python.org網站 >>> win32api.ShellExecute(0, 'open', 'http://www.python.org', '','',1)
# 在默認的媒體播放器中播放E:\song.wma >>> win32api.ShellExecute(0, 'open', 'E:\\song.wma', '','',1)
# 運行位於E:\book\code目錄中的MessageBox.py腳本 >>> win32api.ShellExecute(0, 'open', 'E:\\book\\code\\MessageBox.py', '','',1)
可以看出,使用ShellExecute函數,就相當於在資源管理器中雙擊文件圖標一樣,系統會打開相應的應用程序執行操作。
3 使用CreateProcess函數運行其他程序
為了便於控制通過腳本運行的程序,可以使用win32process模塊中的CreateProcess()函數。其函數原型如下所示。
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles , dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles , dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
其參數含義如下。
appName:可執行的文件名。
commandLine:命令行參數。
rocessAttributes:進程安全屬性,如果為None,則為默認的安全屬性。
threadAttributes:線程安全屬性,如果為None,則為默認的安全屬性。
InheritHandles:繼承標志。
dwCreationFlags:創建標志。
ewEnvironment:創建進程的環境變數。
currentDirectory:進程的當前目錄。
tartupinfo :創建進程的屬性。
以下實例使用win32process.CreateProcess函數運行記事本程序。
>>> import win32process >>> win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) (, , 280, 3076) # 函數返回進程句柄、線程句柄、進程ID,以及線程ID
>>> import win32process >>> win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) (<?XML:NAMESPACE PREFIX = PYHANDLE />, , 280, 3076) # 函數返回進程句柄、線程句柄、進程ID,以及線程ID
有了已創建進程的句柄就可以使用win32process.TerminateProcess函數結束進程,或者使用win32event.WaitForSingleObject等待創建的線程結束。其函數原型分別如下。
TerminateProcess(handle, exitCode) WaitForSingleObject(handle, milliseconds )
對於TerminateProcess參數含義分別如下。
handle:要操作的進程句柄。
exitCode:進程退出代碼。
對於WaitForSingleObject參數含義分別如下。
handle:要操作的進程句柄。
milliseconds:等待的時間,如果為?1,則一直等待。
以下實例實現創建進程後並對其進行操作。
>>> import win32process # 打開記事本程序,獲得其句柄>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 使用TerminateProcess函數終止記事本程序>>> win32process.TerminateProcess(handle[0],0) # 導入win32event模塊>>> import win32event # 創建進程獲得句柄>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 等待進程結束>>> win32event.WaitForSingleObject(handle[0], -1) 0 # 進程結束的返回值
>>> import win32process # 打開記事本程序,獲得其句柄
>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 使用TerminateProcess函數終止記事本程序
>>> win32process.TerminateProcess(handle[0],0) # 導入win32event模塊
>>> import win32event # 創建進程獲得句柄
>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 等待進程結束
>>> win32event.WaitForSingleObject(handle[0], -1) 0 # 進程結束的返回值
4 使用ctypes調用kernel32.dll中的函數
使用ctypes模塊可以使Python調用位於動態鏈接庫中的函數。在Python 2.5版中已經包含了ctypes模塊。如果使用其他版本的Python,可以到http://python.net/crew/theller/ctypes網站下載安裝。ctypes適用於Python 2.3版本及以上。
㈤ python中怎麼調用另一個程序
python中怎麼調用另一個程序?
1、自身函數調用:
自身函數的調用時相當方便的,在定義好了函數以後直接按定義的格式調用即可,出現的錯誤為參數數量不匹配,如:TypeError: func() missing 1 required positional argument: 's',意思為func()函數有一個形式參時但是沒有傳入相對應的實參值。
2、通過包或模塊調用:
通過包或模塊調用相對自身函數調用比較復雜,需要提前導入包或模塊,常用的方法為import 或者from import,導入成功的前提是對應的包或模塊在python路徑之下,可以通過sys.path(sys為系統內置模塊可以直接使用import sys導入)來查看python路徑。以導入第三方包文件requests為例。
3、通過類方法調用:
通過類方法的調用需要在調用之前,實例化一個類對象,通過這個類對象來調用類方法,
注意第三個方法為私有方法,不允許類外部訪問。
㈥ c#調用python的方法
首先在頭文件中使用Python.h,定義一個調用python的函數,在函數中設置Python庫的路徑。然後初始化Python,輸入代碼,運行代碼。最後釋放Python即可。
㈦ python py文件中執行另一個py文件
方法一、
import os
os.system("python filename.py")
方法二:
execfile('xx.py'),括弧內為py文件路徑;
註:如果需要傳參數,就用os.system()那種方法;如果還想獲得這個文件的輸出,那就得用os.popen();
(7)python調用python擴展閱讀:
Python入門命令行怎麼調用.py文件中容易出現的問題
1、如果文件路徑是這樣的:C:Userssd est.py,那麼在命令行狀態下輸入:
C:Userssd> python test.py
2、如果是互動式輸入狀態(>>>←有三個這種折就是互動式狀態),需要輸入:>>> exit()
就會變回命令行狀態。
3、如果文件路徑是:D: est.py ,那麼在命令行狀態下輸入:
C:Userssd> python D: est.py
4、還可以用「cd 文件夾名字」進入新的當年文件夾。
㈧ python如何調用.py文件的函數
【python】如何在某.py文件中調用其他.py內的函數
假設名為A.py的文件需要調用B.py文件內的C(x,y)函數
假如在同一目錄下,則只需
import Bif __name__ == "__main__":
B.C(x,y)
若只需調用單個函數,也可以
from B import Cif __name__ == "__main__":
C(x,y)
若A.py和B.py位於不同的目錄下,可以用以下方法
(假設B.py位於D盤的根目錄下)
1.引用所在路徑
import sys
sys.path.append('D:/')import Bif __name__=="__main__": print B.pr(x,y)
2.使用imp
import imp
B=imp.load_source('B','D:/B.py')import Bif __name__=="__main__": print B.pr(x,y)
㈨ python調用另外一個python程序的結果
os.system只是運行,不返回結果。
用commands
import commands
txt = commands.getoutput('ls -al')
㈩ 如何python3中調用python2中的方法
在Windows操作系統上,Python一般被安裝在C:Pythonxx的位置,這里xx代表版本號,例如,Python3.4就被安裝在C:Python34文件夾中。你只需要把C:Pythonxx加入到系統環境變數中的path變數中,就可以從任何位置調用python解釋器了。
OK,打開命令行窗口,輸入python,就可以調用python解釋器了。
要退出解釋器,可以輸入exit()函數或者quit()函數。
當然,還有另外一種方式調用python解釋器直接解釋執行Python語句,格式:python -c command [arg] ...,這里command就是要執行的python語句。
有一些腳本很有用,也可以直接作為模塊來運行,格式: python -m mole [arg] ...,其中mole就是要運行的模塊名字,當然這個模塊必須要能夠被Python運行時環境找到,也就是說它必須能夠被import到,換句話說,相當於運行了import mole.