python調用net
A. 怎麼調用編寫好的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版本及以上。
B. 如何在.net項目中引入Python
用IronPython就OK
IronPython 是一種在 .NET 及 Mono上的 Python 實現,由微軟的 Jim Hugunin 所發起,是一個開源的項目,基於微軟的 DLR 引擎;託管於微軟的開源網站 CodePlex(www.codeplex.com)。
IronPython 的官方並未實現 Python 通用類庫,僅實現了部分核心類,社區的開源類庫實現有: fepy(http://fepy.sourceforge.net/),fepy 為 IronPython 提供 Python 的大多數通用類庫的實現。
C. 計算機python的實現方式都有哪些
雖然官方 Python 實現差不多得到最廣泛的歡迎,但也有一些其他實現對特定領域的用戶來說更具吸引力。
知名的實現包括:
CPython
這是最早出現並持續維護的 Python 實現,以 C 語言編寫。新的語言特性通常在此率先添加。
Jython
以 Java 語言編寫的 Python 實現。此實現可以作為 Java 應用的一個腳本語言,或者可以用來創建需要 Java 類庫支持的應用。想了解更多信息可訪問 Jython 網站。
Python for .NET
此實現實際上使用了 CPython 實現,但是屬於 .NET 託管應用並且可以引入 .NET 類庫。它的創造者是 Brian Lloyd。想了解詳情可訪問 Python for .NET 主頁。
IronPython
另一個 .NET 的 Python 實現,與 Python.NET 不同點在於它是生成 IL 的完全 Python 實現,並且將 Python 代碼直接編譯為 .NET 程序集。它的創造者就是當初創造 Jython 的 Jim Hugunin。想了解詳情可訪問 IronPython 網站。
PyPy
完全使用 Python 語言編寫的 Python 實現。它支持多個其他實現所沒有的高級特性,例如非棧式支持和 JIT 編譯器等。此項目的目標之一是通過允許方便地修改解釋器 (因為它是用 Python 編寫的),鼓勵該對語言本身進行試驗。想了解詳情可訪問 PyPy 項目主頁。
以上這些實現都可能在某些方面與此參考文檔手冊的描述有所差異,或是引入了超出標准 Python 文檔范圍的特定信息。請參考它們各自的專門文檔,以確定你正在使用的這個實現有哪些你需要了解的東西。以 Java 語言編寫的 Python 實現。此實現可以作為 Java 應用的一個腳本語言,或者可以用來創建需要 Java 類庫支持的應用。想了解更多信息可訪問 Jython 網站。
Python for .NET
此實現實際上使用了 CPython 實現,但是屬於 .NET 託管應用並且可以引入 .NET 類庫。它的創造者是 Brian Lloyd。想了解詳情可訪問 Python for .NET 主頁。
IronPython
另一個 .NET 的 Python 實現,與 Python.NET 不同點在於它是生成 IL 的完全 Python 實現,並且將 Python 代碼直接編譯為 .NET 程序集。它的創造者就是當初創造 Jython 的 Jim Hugunin。想了解詳情可訪問 IronPython 網站。
D. 提個python調用函數的問題,請問python調用 com 或者 .net 中含有byref 參數的函數的問題。
可以通過管道,可以通過操作系統標准輸入輸出傳遞 等等等等
總之操作系統就是php和python之間的bridge
如果說我所看的比笛卡爾更遠一點,那是因為站在巨人肩上的緣故。
E. 無需安裝Python,就可以在.NET里調用Python庫
如果你可以很簡單的引用一個Nuget包,並在無需手動修改的情況下,一切都會自動的配置好,假如可以達到這種程度,你會感覺怎麼樣?這就是我創建Python.Included的願景,Python.Included可以把packages python-3.7.3-embed-amd64.zip包含在它的程序集里,這這樣就允許你可以通過Nuget來有效的引用Python了。為了證明它能正常工作,並可以快速提供所有的NumSharp中仍然缺少的Numpy功能,我創建了基於Python.Included的Numpy.NET這個項目。
F. Aforge.net 調用pYthon
可以。
.NET環境可以調用Python,叫做IRONPython,Python環境下,無法調用C#,C#是編譯型語言,Python是解釋型語言,也就是腳本語言。
G. 如何使用它修改的地方Python中的.NET方法
PythonNet不包含本很清楚表達的IronPython的,但它幾乎同樣的事情。
那麼,讓我們來看看IronPython的文檔 REF 和退出參數:
Python語言的推移,值的所有參數。有沒有語法來表示一個參數應該按引用傳遞像有.NET語言,如C#和VB.NET通過ref和out關鍵字。 IronPython的支持傳遞ref或out參數的方法,一種含蓄的方式和明確的方式有兩種方式。
在隱式方式,一種說法通常傳遞到方法調用,並且它的(可能)更新值從呼叫沿與正常返回值(如果有的話)方法返回。這與多個返回值的Python的功能組成以及...
在明確的方式,你可以通過 clr.Reference的一個實例[T] 的ref或out參數,它的值欄位將獲得由呼叫建立。如果有多個重載與ref參數顯式的方法是有用...
有例子為。但把它定製您的具體情況:
itemIDs,如果itemNames = GetItems()
或者,如果你真的想要的:
itemIDsRef = clr.Reference [數組[INT]()
itemNamesRef = clr.Reference [數組[字元串]()
GetItems(itemIDs,如果itemNames)
itemIDs,如果itemNames = itemIDsRef.Value,itemNamesRef.Value
CPython的使用 PythonNet 做基本上是同樣的事情。最簡單的方法來做到退出參數是無法通過他們,接受他們成為多餘的返回值,以及 REF 參數通過輸入值作為參數,並接受輸出值作為額外的返回值。就像IronPython的的隱式的解決方案。 (除與 REF 或退出參數無效功能總是返回無的 REF之前或退出參數,甚至如果它不會在IronPython的。)您可以通過檢查返回值很容易弄清楚pretty的。所以,你的情況:
_,itemIDs,如果itemNames = GetItems()
同時,事實上這些恰好是陣列不使事情任何更難。由於的文檔解釋,PythonNet提供了可迭代介面,所有的的IEnumerable 的集合,而序列的協議,以及為陣列。所以,你可以這樣做:
的ITEMID,在了itemname拉鏈(itemIDs,如果itemNames):
列印ITEMID,了itemname
而的Int32 和字元串對象將轉換為本地 INT / 長和 STR / UNI code 對象,就好像他們是直接返回。
如果你真的想明確地將這些原生值,就可以了。 地圖或列表COM prehension會給你一個Python列表,可迭代的,包括周圍的 A PythonNet封裝陣列或其他的IEnumerable 。你可以明確地做一個長或 UNI code 出的的Int32 或字元串如果您需要。所以:
itemIDs =地圖(INT,itemIDs)
如果itemNames =地圖(UNI code,如果itemNames)
不過,我看不出有多大的優勢,這樣做,除非你需要,例如,$ P $使用其中的任何之前對檢查所有的值。
H. 請問c#怎麼用pythonnet調用python
這個是不是調用啊。這個僅僅是執行。如果是說調 用的話。python for .net和iron python都支持.net調 用python的模塊。
不過僅僅是執行的話也容易。假設你的start.py是一個可以執行的程序。是執行不是調用。不是import。
那麼你不需要set search paths,因為這個path是給import,也就是調用使用的。你set path沒有用。
你只需要全路徑帶過去,把start.py的全路徑補全了就可以了。
要實現調用,還需要將python的模塊編譯成c#可以使用的庫的形式。才可以直接用c#的方法import進來。很簡單的。而不需要使用python這個engine。
理論上講,如果.net支持動態載入。也可以使用動態載入的方法,使用python這個engine動態載入一個模塊。不過我不知道python for .net和iron python有沒有實現。這個太麻煩了。應該沒有完成。
所以你還是將python的代碼使用python for .net或者是iron python編譯生成可以發布的庫。後面就簡單的了。直接在.net里import就好了。
I. python介面中net.blobs.data.shape 是怎麼調用的
import numpya = numpy.array([[1,2,3],[4,5,6]])print a.shape矩陣有一個shape屬性,是一個(行,列)形式的元組