Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
process.Start()在C#中不起作用,无法调用python脚本_C#_Python_Process - Fatal编程技术网

process.Start()在C#中不起作用,无法调用python脚本

process.Start()在C#中不起作用,无法调用python脚本,c#,python,process,C#,Python,Process,对不起,如果这是显而易见的,我是C#的新手。 我正在开发一个程序,该程序运行一个python脚本来在线检查某些内容,然后将其写回一个文件,C#读取并放入一个表单中。如果我同时手动运行这两个脚本,一切都会正常工作,但我确实希望从C#程序启动脚本 以下是启动python脚本的函数: private void RunPython() { Process p = new Process(); ProcessStartInfo startInfo = new Process

对不起,如果这是显而易见的,我是C#的新手。 我正在开发一个程序,该程序运行一个python脚本来在线检查某些内容,然后将其写回一个文件,C#读取并放入一个表单中。如果我同时手动运行这两个脚本,一切都会正常工作,但我确实希望从C#程序启动脚本

以下是启动python脚本的函数:

private void RunPython()
{
        Process p = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = "python " + path + "\\foo.py";
        p.StartInfo = startInfo;
        p.Start();
}

private void Button_Click(object sender, RoutedEventArgs e)
{
        // get things set up... etc.
        RunPython();
}
我试着在不隐藏窗口的情况下运行它,它只是在“path”目录中显示一个空的cmd行。它从不运行python脚本吗?看起来不是这样,但它也可能正在运行它并立即关闭它。我不知道

我需要它在C#程序运行期间保持打开状态,因此,如果问题是它在RunPython()方法返回时退出,是否有其他方法可以解决这个问题


谢谢

如果要在命令行中使用cmd.exe的参数运行程序,则需要
/c
标志。或者,您可以使用
/k
,但这样可以使命令进程保持运行,而这可能是您不希望的

/c执行字符串指定的命令,然后停止

所以它的用法是
cmd.exe/c[string]

尝试将参数行更改为:

startInfo.Arguments = "/c \"python " + path + "\\foo.py\"";

有关运行cmd.exe和处理命令的
string
部分中的引号的更多信息,请参见此处:

您是否可以发布
foo.py
?它大约有500行,当我从命令行手动启动它时,它可以工作。如果我分别启动两个程序,整个过程都会正常工作,我只是想找到一种只启动一个的方法。我尝试了两个
“\“python”+path+“\\foo.py\”
“/c\“python”+path+“\\foo.py\”和两者都不起作用。当我使窗口样式可见时,它仍然只是在path目录中显示一个空行,但没有显示它启动了python文件.Wait。这起作用了。我给出的路径还有另一个问题。这就回答了问题。非常感谢。下面是工作代码:
startInfo.Arguments=“/c\”python foo.py\”@Zaya很抱歉,我用引号写出了命令参数,但忘记了标志本身。很高兴你找到了答案,我编辑了这个问题,所以现在应该是正确的。你能发布一个python脚本args的示例吗?@Learner你应该能够将它们添加到
foo.py
和关闭python参数字符串的
\“
之间的参数字符串中。