2016-08-16 127 views
0

如何將此列表發送到Python腳本列表中?作爲參數發送這麼大。謝謝。如何將數據從C#發送到Python

List<String> cefList= new List<String>(); 
       for(int i=0; i<1000; i++){ 
       cefList.Add("CEF:0|ArcSight|ArcSight|6.0.3.6664.0|agent:030|Agent [test] type [testalertng] started|Low| 
    eventId=1 mrt=1396328238973 categorySignificance=/Normal categoryBehavior=/Execute/Start 
    categoryDeviceGroup=/Application catdt=Security Mangement categoryOutcome=/Success 
    categoryObject=/Host/Application/Service art=1396328241038 cat=/Agent/Started 
    deviceSeverity=Warning rt=1396328238937 fileType=Agent 
    cs2=<Resource ID\="3DxKlG0UBABCAA0cXXAZIwA\=\="/> c6a4=fe80:0:0:0:495d:cc3c:db1a:de71 
    cs2Label=Configuration Resource c6a4Label=Agent 
    IPv6 Address ahost=SKEELES10 agt=888.99.100.1 agentZoneURI=/All Zones/ArcSight 
    System/Private Address Space 
    Zones/RFC1918: 888.99.0.0-888.200.255.255 av=6.0.3.6664.0 atz=Australia/Sydney 
    aid=3DxKlG0UBABCAA0cXXAZIwA\=\= at=testalertng dvchost=SKEELES10 dvc=888.99.100.1 
    deviceZoneURI=/All Zones/ArcSight System/Private Address Space Zones/RFC1918: 
    888.99.0.0-888.200.255.255 dtz=Australia/Sydney _cefVer=0.1"); 
       } 
+1

使用套接字通過他們 – Raskayu

+0

之間的數據最簡單的方法是打印在C#到stdout和使用匿名管道讀取python中的數據。但它取決於兩個過程之間的關係。 C#運行python,python運行C#還是它們不相關? – cdarke

+0

C#運行Python腳本。 – user3661837

回答

1

因爲你的C#程序運行python腳本,我想最簡單的解決辦法是將重定向Python進程的標準輸入:

 Process pyProc = Process.Start(
     new ProcessStartInfo("python.exe", @"/path/to/the/script.py") 
     { 
      RedirectStandardInput = true, 
      UseShellExecute = false 
     } 
    ); 
    for (int ii = 0; ii < 100; ++ii) 
    { 
     pyProc.StandardInput.WriteLine(string.Format("this is message # {0}", ii)); 
    } 

在python腳本方面,你只需要使用內置在功能raw_input像下面(請注意功能已更名爲3.X的raw_input來):

while True: 
    data = raw_input() 
    print(data) 
+0

以及如何在Python中得到這個? – user3661837

+0

@ user3661837,請參閱更新 –

+0

raw_input被重命名爲輸入。但是它不起作用,而True: data = input() with open(「C:/Users/korisnik/Desktop/file.txt」,「w」)as text_file: text_file.write(data) – user3661837

0

您需要將數據序列化爲可從C#和Python訪問的通用格式。例如 - XML或JSON。我會建議使用JSON。

這時你有幾種選擇:

  • 使用套接字來傳輸數據。
  • 使用http傳輸數據。
  • 寫從C#中的文件,並從Python的

套接字可能會更快的讀取文件。使用http可能會更容易。使用文件時,您需要有某種調度或通知系統,以便在您寫入文件時讓您的Python程序知道。

+0

有沒有人有一個例子?我是Python新手。 – user3661837

+0

你知道如何將數據轉換成JSON從C#?在python中,你可以使用'json'模塊解析一個json字符串。 '先導入json'然後'data = json.loads(「json string」)' – masnun

+0

像這樣? http://pastebin.com/SfZQZKLg – user3661837