[英]Python Script from C# console application
首先,这是其中的一个重复步骤: 在C#上运行python脚本不起作用
我的python脚本可以从命令行正常运行,但是从控制台应用程序运行时无法正常运行。
我的python脚本假设从目录中提取所有.log文件,并将其粘贴到csv文件中。 然后,我想从C#控制台应用程序访问csv文件。 当我运行python脚本时,它会创建文件,然后退出。 除此之外什么也没做。
这是我用来尝试和运行python脚本的代码。 (我不是,也不想使用IronPython)。
public void runPythonScript()
{
ProcessStartInfo startInfo = new ProcessStartInfo("python");
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.FileName = @"C:\Python27\python.exe";
startInfo.Arguments = @"C:\Users\bmahnke\Desktop\Python-Files\python3.py";
try
{
using (Process prog = Process.Start(startInfo))
{
prog.WaitForExit();
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
您没有给我们太多帮助。 从其他程序运行Python脚本时,与从控制台运行脚本时,行为可能会有所不同的原因有很多:
创建进程时,通常会继承其父级所有环境变量的副本,除非父级专门设置了其他内容。 Python进程从控制台外壳程序进程继承的环境变量可能与从C#程序继承的环境变量完全不同,后者是从启动它的任何程序继承而来的。 要检查的重要变量是PATH(工作目录),PYTHONPATH,PYTHONHOME,PYTHONUNBUFFERED以及脚本专门读取的任何内容。
标准文件描述符的行为可能有所不同,具体取决于它们是连接到控制台,文件还是通过管道传输到另一个进程。
可以在不连接控制台的情况下以编程方式启动进程。 如果您的子进程根本没有控制台,并且您没有重定向其标准文件描述符,则在尝试对其进行读写时,它可能会崩溃。
编辑-我只是通过创建一个win32 C#程序来调用基于控制台的Python脚本并无法重现崩溃来进行尝试-Python的控制台输出仅消失在以太中。 我想我记得以前曾经遇到过问题,但是我不确定哪种因素会导致问题。 可能值得调查,但是我不确定这会引起您的麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.