无法从c向python脚本传递带空格的参数#

2024-06-26 00:08:45 发布

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

我使用ProcessInfoStart方法从c#调用python脚本。作为参数,它接收JSON并输入python脚本

如果我们在没有任何空格的情况下传递JSON,它工作得很好,但如果有空格,则原始JSON将被拆分为空格,并作为参数传递,其余部分将被忽略

public static bool ExecutePythonScript(string jRequest, string fileType)
{
    string pythonExePath = Convert.ToString(ConfigurationManager.AppSettings["PythonExe"]);
    bool bIsExecutionSuccess = true;
    try
    {
        var psi = new ProcessStartInfo();
        psi.FileName = pythonExePath;
        var script = @"C:Scripts\pdf-to-csv.py";

        psi.Arguments = $"\"{script}\" \"{jRequest}\"";

        psi.UseShellExecute = false;
        psi.CreateNoWindow = true;
        psi.RedirectStandardOutput = true;
        psi.RedirectStandardError = true;

        var errors = "";
        var results = "";
        using (var process = Process.Start(psi))
        {
            errors = process.StandardError.ReadToEnd();
            results = process.StandardOutput.ReadToEnd();
        }

        if (!string.IsNullOrEmpty(errors))
            bIsExecutionSuccess = false;
    }
    catch(Exception ex)
    {
        bIsExecutionSuccess = false;
    }
    return bIsExecutionSuccess;
}

接受参数的Python脚本

input_params = sys.argv[1]
input_params = input_params.replace("'",'"')
data_params = json.loads(input_params)

是否有一种方法可以将带有空格的jRequest传递给python脚本


Tags: 方法脚本jsonfalsetrueinputstringvar