我使用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脚本
Python脚本参数可以用单引号括起来,以便读取整个字符串(包括空格)
尝试在单引号中包装JSON字符串
相关问题 更多 >
编程相关推荐