如何将数据从C#发送到Python

2024-05-20 17:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

如何用Python脚本将这个列表发送到list?这对于作为参数发送来说太大了。谢谢您。在

 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");
                }

Tags: stringapplicationaddressspaceprivatearcsightallsystem
2条回答

由于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):

^{2}$

您需要将数据序列化为可从C#和Python访问的通用格式。例如-XML或JSON。我建议使用JSON。在

然后您有几个选择:

  • 使用套接字传输数据。在
  • 使用http传输数据。在
  • 从C写入文件,然后从Python读取该文件

插座可能会更快。使用http可能更容易。对于文件,您将需要某种调度或通知系统,以便在您写入文件时让Python程序知道。在

相关问题 更多 >