C#如何調(diào)用python腳本

小編給大家分享一下C#如何調(diào)用python腳本,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的龍井網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

只嘗試了兩種調(diào)用方式,第一種只適用于python腳本中不包含第三方模塊的情況,第二種針對的是python腳本中包含第三方模塊的情況。不管哪種方式,首先都需要安裝IronPython。我是通過vs2017的工具->NuGet包管理器->管理解決方案的NuGet包,搜索IronPython包安裝,也可以在官網(wǎng)下載安裝包自行安裝后添加引用即可。

方式一:適用于python腳本中不包含第三方模塊的情況

C#代碼 

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using System;

namespace CSharpCallPython
{
  class Program
  {
    static void Main(string[] args)
    {
      ScriptEngine pyEngine = Python.CreateEngine();//創(chuàng)建Python解釋器對象
      dynamic py = pyEngine.ExecuteFile(@"test.py");//讀取腳本文件
      int[] array = new int[9] { 9, 3, 5, 7, 2, 1, 3, 6, 8 };
      string reStr = py.main(array);//調(diào)用腳本文件中對應(yīng)的函數(shù)
      Console.WriteLine(reStr);

      Console.ReadKey();
    }
  }
}

python腳本

def main(arr):
  try:
    arr = set(arr)
    arr = sorted(arr)
    arr = arr[0:]
    return str(arr)
  except Exception as err:
    return str(err)

結(jié)果

C#如何調(diào)用python腳本

方式二:適用于python腳本中包含第三方模塊的情況

C#代碼

using System;
using System.Collections;
using System.Diagnostics;

namespace Test
{
  class Program
  {
    static void Main(string[] args)
    {
      Process p = new Process();
      string path = "reset_ipc.py";//待處理python文件的路徑,本例中放在debug文件夾下
      string sArguments = path;
      ArrayList arrayList = new ArrayList();
      arrayList.Add("com4");
      arrayList.Add(57600);
      arrayList.Add("password");
      foreach (var param in arrayList)//添加參數(shù)
      {
        sArguments += " " + sigstr;
      }

      p.StartInfo.FileName = @"D:\Python2\python.exe"; //python2.7的安裝路徑
      p.StartInfo.Arguments = sArguments;//python命令的參數(shù)
      p.StartInfo.UseShellExecute = false;
      p.StartInfo.RedirectStandardOutput = true;
      p.StartInfo.RedirectStandardInput = true;
      p.StartInfo.RedirectStandardError = true;
      p.StartInfo.CreateNoWindow = true;
      p.Start();//啟動進(jìn)程

      Console.WriteLine("執(zhí)行完畢!");

      Console.ReadKey();
    }
  }
}

python腳本

# -*- coding: UTF-8 -*-
import serial
import time

def resetIPC(com, baudrate, password, timeout=0.5):
  ser=serial.Serial(com, baudrate, timeout=timeout)
  flag=True
  try:
    ser.close()
    ser.open()
    ser.write("\n".encode("utf-8"))
    time.sleep(1)
    ser.write("root\n".encode("utf-8"))
    time.sleep(1)
    passwordStr="%s\n" % password
    ser.write(passwordStr.encode("utf-8"))
    time.sleep(1)
    ser.write("killall -9 xxx\n".encode("utf-8"))
    time.sleep(1)
    ser.write("rm /etc/xxx/xxx_user.*\n".encode("utf-8"))
    time.sleep(1)
    ser.write("reboot\n".encode("utf-8"))
    time.sleep(1)
  except Exception:
    flag=False
  finally:
    ser.close()
  return flag

resetIPC(sys.argv[1], sys.argv[2], sys.argv[3])

上面的python腳本實(shí)現(xiàn)的是重啟IPC設(shè)備,測試功能成功。

調(diào)用包含第三方模塊的python腳本時(shí),嘗試過使用path.append()方式,調(diào)試有各種問題,最終放棄了,沒有研究。

以上是“C#如何調(diào)用python腳本”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞名稱:C#如何調(diào)用python腳本
文章分享:http://bm7419.com/article38/gijgsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、企業(yè)建站、小程序開發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站排名、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)