Python 最小化Base64

Python 最小化Base64,python,c#,base64,Python,C#,Base64,因此,我有一个C#代码,它将图像转换为base64,反之亦然。现在,我想将生成的base64发送到python 这是我现有的代码 var startProcess = new ProcessStartInfo { FileName = pythonInterpreter, Arguments = string.Format($"\"{pythonPathAndCod

因此,我有一个C#代码,它将图像转换为base64,反之亦然。现在,我想将生成的base64发送到python

这是我现有的代码

            var startProcess = new ProcessStartInfo
            {
                FileName = pythonInterpreter,
                Arguments = string.Format($"\"{pythonPathAndCode}\" {b64stringCSharp}"),
                UseShellExecute = false,
                RedirectStandardOutput = true,
                RedirectStandardInput = true,
                RedirectStandardError = true,
                CreateNoWindow = true,
            };

            using (Process process = Process.Start(startProcess))
            {
                error = process.StandardError.ReadToEnd();
                testResult = process.StandardOutput.ReadToEnd();
                lblTestOutput.Text = testResult;
                lblError.Text = error;
            }
当我试图向python发送一个字符串的小值时,这段代码工作得很好。但在发送base64值时,出现了异常错误

System.ComponentModel.Win32异常:“文件名或扩展名太长”

请注意,当我只发送32000个或更少的字符串,但base64由98260组成时,代码运行得非常好

有没有办法最小化这个base64

这是我的python代码:

import sys

inputFromC = sys.stdin
print("Python Recevied: ", inputFromC)

Windows中命令+参数的最大长度为32767个字符()。这和你看到的是一致的

我建议改为通过进程的标准输入发送图像。比如:

var startProcess=new ProcessStartInfo
{
FileName=pythonInterpreter,
Arguments=string.Format($“\”{pythonpatandcode}\”),
UseShellExecute=false,
重定向标准输出=真,
重定向标准输入=真,
RedirectStandardError=true,
CreateNoWindow=true,
};
使用(Process=Process.Start(startProcess))
{
进程.StandardInput.Write(b64stringCSharp);
process.StandardInput.Close();
error=process.StandardError.ReadToEnd();
testResult=process.StandardOutput.ReadToEnd();
lblTestOutput.Text=测试结果;
lblError.Text=错误;
}

显然,修改Python脚本以从标准输入读取,而不是从命令行参数读取。

Windows中命令+参数的最大长度为32767个字符()。这和你看到的是一致的

我建议改为通过进程的标准输入发送图像。比如:

var startProcess=new ProcessStartInfo
{
FileName=pythonInterpreter,
Arguments=string.Format($“\”{pythonpatandcode}\”),
UseShellExecute=false,
重定向标准输出=真,
重定向标准输入=真,
RedirectStandardError=true,
CreateNoWindow=true,
};
使用(Process=Process.Start(startProcess))
{
进程.StandardInput.Write(b64stringCSharp);
process.StandardInput.Close();
error=process.StandardError.ReadToEnd();
testResult=process.StandardOutput.ReadToEnd();
lblTestOutput.Text=测试结果;
lblError.Text=错误;
}

显然,修改Python脚本以读取标准输入,而不是命令行参数。

如果将其最小化,它将不再是base64。与base64相比,发送原始二进制文件已经“最小化”。考虑到此约束,您可能需要重新考虑如何将图像接受到Python程序:。如果将其最小化,它将不再是base64。与base64相比,发送原始二进制文件已经“最小化”。考虑到以下约束条件,您可能需要重新考虑如何向Python程序接受图像:。或者将base64写入临时文件,然后告诉Python代码读取该文件。@Frankyell,但请记住,您需要清理临时文件,即使机器在C#/Python代码仍在执行时关闭。错误消失了。你真棒!非常感谢。我还可以知道如何让python接收标准输入吗?我将在问题中添加现有的python代码。谷歌表示,这将有很大帮助。
sys.stdin.read()
。我不使用Python。或者将base 64写入临时文件,然后让Python代码读取该文件。@Frankyell当然可以,但请记住,即使在C#/Python代码仍在执行时机器关闭,也需要清理临时文件。错误消失了。你真棒!非常感谢。我还可以知道如何让python接收标准输入吗?我将在问题中添加现有的python代码。谷歌表示,这将有很大帮助。
sys.stdin.read()
。我不做Python。