C#調(diào)用Python程序傳參數(shù)獲得返回值
說(shuō)明
C# 調(diào)用 Python 程序有多種方式,本篇用的是第 4 種:
- nuget的ironPython;
- 用 c/c++ 調(diào)用python,再封裝成庫(kù)文件,c# 調(diào)用;
- c# 命令行調(diào)用.py文件執(zhí)行;
- python 程序制作成 .exe 可執(zhí)行文件,c# 使用命令行進(jìn)行傳參取返回值。
1. Python 腳本
先建個(gè)測(cè)試腳本 d://Test/EchoHi.py 代碼如下:
import sys
def EchoHi(a):
return ("Hello, " + a)
if __name__ == "__main__":
# print('參數(shù)列表:', str(sys.argv))
print(EchoHi(sys.argv[1]))
測(cè)試一哈
D:\Test>python EchoHi.py Mr.Tree
Hello, Mr.Tree
2. 打包成Windows可執(zhí)行文件
首先安裝給python打包的python包
D:\Test>pip install pyinstaller
執(zhí)行打包命令,看輸出
D:\Test>pyinstaller -F EchoHi.py
21185 INFO: Writing RT_ICON 7 resource with 1128 bytes
21192 INFO: Updating manifest in D:\Test\build\EchoHi\run.exe.0u78g5s3
21444 INFO: Updating resource type 24 name 1 language 0
21447 INFO: Appending archive to EXE D:\Test\dist\EchoHi.exe
21634 INFO: Building EXE from EXE-00.toc completed successfully.
這里有生成的可執(zhí)行文件的位置,進(jìn)入可執(zhí)行文件的目錄測(cè)試
D:\Test\dist>EchoHi.exe Mr.Tree
Hello, Mr.Tree
3. C# 程序
CallCmd.cs 代碼如下
using System;
class Test
{
public static void Main(String[] args)
{
string cmdpath = "d://Test/dist/EchoHi.exe";
string arguments = "Mr.Cmd";
Console.WriteLine(CallCMD(cmdpath, arguments));
}
public static string CallCMD(string _command, string _arguments){
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(_command, _arguments);
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
return(p.StandardOutput.ReadToEnd());
}
}
特別需要注意的是:
命令參數(shù)是 arguments 內(nèi)不能有多余空格,因?yàn)槊總€(gè)空格都會(huì)被識(shí)別為分割;
還要注意加一層轉(zhuǎn)義,假執(zhí)行命令為 EchoHi.exe Mr.\"Tree\" (Tree加了雙引號(hào))時(shí),定義就應(yīng)該為
string arguments = "\\\"Mr.Cmd\\\"";
此后編譯運(yùn)行即可。
4. 參考
[1] https://blog.csdn.net/qq_42063091/article/details/82418630
到此這篇關(guān)于C#調(diào)用Python程序傳參數(shù)獲得返回值的文章就介紹到這了,更多相關(guān)C#調(diào)用Python獲得返回值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于C#實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的HTTP服務(wù)器實(shí)例
這篇文章主要介紹了基于C#實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的HTTP服務(wù)器的方法,詳細(xì)分析了http服務(wù)器的實(shí)現(xiàn)原理與相關(guān)技巧,以及對(duì)應(yīng)的注意事項(xiàng),需要的朋友可以參考下2014-12-12
C# Socket通信的實(shí)現(xiàn)(同時(shí)監(jiān)聽(tīng)多客戶端)
這篇文章主要介紹了C# Socket通信的實(shí)現(xiàn)(同時(shí)監(jiān)聽(tīng)多客戶端),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
C# 編碼好習(xí)慣,獻(xiàn)給所有熱愛(ài)c#的同志
c#編寫(xiě)者,需要培養(yǎng)的一些好習(xí)慣2009-02-02
Winform下實(shí)現(xiàn)圖片切換特效的方法
這篇文章主要介紹了Winform下實(shí)現(xiàn)圖片切換特效的方法,包括百葉窗、淡入、旋轉(zhuǎn)等多種效果,需要的朋友可以參考下2014-08-08
C#中FormClosing與FormClosed的區(qū)別詳細(xì)解析
本文是對(duì)C#中FormClosing與FormClosed的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10
C#日期格式強(qiáng)制轉(zhuǎn)換方法(推薦)
下面小編就為大家分享一C#日期格式強(qiáng)制轉(zhuǎn)換的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
對(duì)WPF中的TreeView實(shí)現(xiàn)右鍵選定
這篇文章介紹了WPF實(shí)現(xiàn)右鍵選定TreeView的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06

