我想在
Python和C#之间传递二进制信息.我假设您可以打开一个标准的输入/输出通道,并像文件一样读写它,但是有很多可移动的部分,我不太了解C#.我想做这种事情,但不写文件.
# python code
with open(DATA_PIPE_FILE_PATH, 'wb') as fid:
fid.write(blob)
subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH)
with open(DATA_PIPE_FILE_PATH, 'rb') as fid:
'Do stuff with the data'
// C# code
static int Main(string[] args){
byte[] binaryData = File.ReadAllBytes(DataPipeFilePath);
byte[] outputData;
// Create outputData
File.WriteAllBytes(outputData)
我已经尝试了几种使用标准输入/输出的不同方法,但我没有运气匹配它们,就像我说的那样,有许多活动部件.我尝试过类似的东西
p = subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write(blob)
p.stdin.close()
要么
p = subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = p.communicate(blob)
在python一边随着
TextReader tIn = Console.In;
TextWriter tOut = Console.Out;
String str = tIn.ReadToEnd();
//etc...
以及其他一些在C#方面无效的东西.我在某些方面取得了一些成功,但我已经改变了很多,以至于我不记得什么对什么有效.有人可以给我一个关于哪些部件效果最好的提示,或者这是否可行?
我想传递的数据包含null和其他不可打印的字符.