當前位置:
首頁 > 最新 > C#使用Python腳本應用-傳參和獲取返回值

C#使用Python腳本應用-傳參和獲取返回值

python腳本語言對於運維來說是非常方便的,特別是第三方庫,但是我的桌面應用是c#寫的,所以我要考慮怎麼去讓c#能去調用,賦值和傳參python,有兩種方法,但是都有利弊,希望有更好方法的小夥伴能分享一下。

第一個方法,在vs的NuGet包里,有一個IronPython包,IronPython 是一種在 NET 和 Mono 上實現的 Python 語言,使用動態類型系統以讓更多腳本語言能很容易地移植到NET Framework上。如果不使用第三方庫,這個軟體相當完美,但是使用第三方庫的時候就各種問題來了,第一,不能使用pip安裝,pip安裝沒有.egg文件,必須引用.egg的文件才能使用。第二,安裝過程的繁瑣性,反正我試了一下,就不想在體驗第二遍了。百度搜索的基本上都是這個方法的介紹。

第二個方法,用python編譯好文件,*.py,在c#中用流的方式打開,修改,然後保存,在模擬dos環境下運行,獲取返回值。傳參和返回都能實現,但是弊端就是還要在電腦上裝python和第三方庫。下面我們來看下這種方法的實現。

首先定義一個方法。通過cmd去運行python程序,並且獲取它的返回值。

private void Result(string mingling)

{

Process CmdProcess = new Process();

CmdProcess.StartInfo.FileName = "cmd.exe";

CmdProcess.StartInfo.CreateNoWindow = true; // 不創建新窗口

CmdProcess.StartInfo.UseShellExecute = false; //不啟用shell啟動進程

CmdProcess.StartInfo.RedirectStandardInput = true; // 重定向輸入

CmdProcess.StartInfo.RedirectStandardOutput = true; // 重定向標準輸出

CmdProcess.StartInfo.RedirectStandardError = true; // 重定向錯誤輸出

CmdProcess.StartInfo.Arguments = "/c " + mingling;//「/C」表示執行完命令後馬上退出

CmdProcess.Start();//執行

StreamReader reader = CmdProcess.StandardOutput;

while (!reader.EndOfStream)

{

listBox1.Items.Add(reader.ReadLine());

}

}

運行裡面程序,並對裡面進行修改。

private void button1_Click(object sender, EventArgs e)

{

listBox1.Items.Clear();

string[] lines = File.ReadAllLines(@"command.py");//打開相對路徑的python程序

//修改第五列,第六列的數據,當然也可以是一個空的*.py,全部命令都修改進去,我這裡舉個例子

lines[4] = "client.connect("" + textBox1.Text + "", username="" + textBox2.Text + "", password="" + textBox3.Text + "")";//從textbox裡面獲取賬號密碼進行登錄

lines[5] = "stdin, stdout, stderr = client.exec_command("tftp " + textBox4.Text + " put startup.cfg " + textBox1.Text + ".txt")";//修改參數,tftp保存交換機配置命令

File.WriteAllLines(@"command.py", lines, Encoding.UTF8);

Result(@"command.py");

}

我這是一個交換機配置備份的一個功能,IP,用戶名,密碼寫進去,交換機實現配置保存,返回結果顯示在listbox上面,IP,用戶名,密碼可以從控制項裡面得到,也可以自己寫在一個txt裡面讀取也可以,固定下來,寫個循環,每天點一下就可以導出,後面擴展還可以實現配置對比。

這兩種方法都可以實現對python腳本傳參和返回信息。python的第三方庫確實有很多用起來很方便,如果在一門語言編寫某個功能有點吃力的時候,可以考慮一下,用別的語言去實現,再去調用。

最後來一張過年過節的心情圖。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python數據分析常見庫介紹之Pandas
Github上最受歡迎的Python框架Flask入門

TAG:Python |