Передача данных между Python и C # без записи файла

Я хотел бы передать двоичную информацию между 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) 

на стороне питона вместе с

 TextReader tIn = Console.In; TextWriter tOut = Console.Out; String str = tIn.ReadToEnd(); //etc... 

а также несколько других вещей, которые не работали на стороне C #. У меня был небольшой успех с некоторыми вещами, но я изменил его настолько, что не помню, для чего он работал. Может ли кто-нибудь дать мне подсказку, какие части будут работать лучше всего, или если это возможно?

Данные, которые я хочу передать, имеют нулевые и другие непечатаемые символы.

2 Solutions collect form web for “Передача данных между Python и C # без записи файла”

Одна из возможностей – использовать что-то вроде Python для .NET , которое обеспечивает взаимодействие между C # и (стандартным, C) Python.

В зависимости от того, что нужно выполнять вашим подпрограммам Python, IronPython также может быть хорошим вариантом, поскольку он напрямую расходуется и может использоваться внутри C #.

Обе эти опции избегают попытки связи через командную строку, так как у вас есть прямой доступ к объектам Python из .NET и наоборот.

Этот код на Python был правильным

 p = Popen(C_SHARP_EXECUTABLE_FILE_PATH, stdout=PIPE, stdin=PIPE, stderr=PIPE) out, err = p.communicate(blob) 

И на стороне C # я получил его для работы с

 Stream ms = Console.OpenStandardInput(); 
  • Где материал «печатает», когда приложение не работает с терминала?
  • Python считывает из подпроцесса stdout и stderr отдельно при сохранении порядка
  • Python - печатать список строк CSV в выровненных столбцах
  • Ошибка ввода / вывода IOError при печати
  • Сохранение stdout из subprocess.Popen в файл, плюс запись большего количества материала в файл
  • Использовать Python для записи вывода CSV в STDOUT
  • Захват вывода в скрипт python из другого скрипта python с подпроцессом
  • Как я могу отправить многопроцессорную обработку процесса python на Tkinter gui
  • Печать строки в нижней части консоли / терминала
  • Может ли кто-нибудь дать мне быстрый учебник по stdin и stdout в Python 3?
  • Чтение stdout из работающего скрипта с Python
  • Python - лучший язык программирования в мире.