从c#启动python脚本的方法

本文关键字:方法 脚本 python 启动 | 更新日期: 2023-09-27 17:54:18

我使用了搜索引擎。我找不到我想要的东西,而且我不擅长编程。我有一个使用hashlib和M2Crypto的.py脚本,当我使用iron python从c#运行程序时,它说没有名为hashlib的模块。我找不到将hashlib导入c#或ironpython的方法,即使我搜索了所有的网络,我尝试了下面的代码,它似乎也不起作用。你能帮忙吗?谢谢。

   Process p = new Process(); // create process (i.e., the python program
   GetShortPathName(decdbpath, shortPath, shortPath.Capacity);
   GetShortPathName(db, shortPath2, shortPath2.Capacity);
   p.StartInfo.FileName = "C:''Python27''python.exe";
   p.StartInfo.UseShellExecute = false;
   p.StartInfo.Arguments = a+"''pycode.py" + shortPath + " " + 
                           txt_entermail.Text + " >" + db;
   p.Start(); // start the process (the python program)
   p.WaitForExit();
   MessageBox.Show("Decryption Done");

最后我发现了问题,py脚本的路径包含了一个空格,我修复了这个问题,但是现在python脚本拒绝接受参数?由于

string format = string.Format(shortPath + "''pycode.py"+" "+shortPath2.ToString() + " " + txt_entermail.Text + " > " + shortPath3.ToString());

这是结果:

usage C:'Users'win7'Ziad'MOBILE~1'DBEXPL~1'WINDOW~1'bin'Debug'pycode.py argument1 argument2> argument3

从c#启动python脚本的方法

试着告诉我:

p.Arguments = string.Format("{0} {1}", cmd, args);
     p.UseShellExecute = false;
     p.RedirectStandardOutput = true;
     using(Process process = Process.Start(p))
     {
         using(StreamReader reader = process.StandardOutput)
         {
             string result = reader.ReadToEnd();
             Console.Write(result);
         }
     }

我相信你的问题是在你的python脚本,而不是在你的c#。参见无法导入hashlib