Передача данных между 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(); 
  • многопоточность с помощью wx.TextCtrl (или базового GTK +)
  • Перенаправление stdout и stderr в PyQt4 QTextEdit из вторичного потока
  • Вывод задачи и процесса Gradle Exec
  • Как получить асинхронные данные stdout подпроцесса?
  • Python-мониторинг stderr и stdout подпроцесса
  • process.stdout.readline () зависает. Как правильно использовать его?
  • subprocess.Popen.stdout - чтение stdout в режиме реального времени (снова)
  • Запуск сценария powershell в скрипте python, как заставить python печатать вывод powershell во время его запуска
  •  
    Interesting Posts for Van-Lav

    Сортировка вывода cProfile по percall при профилировании скрипта Python

    Нет модуля с именем PIL

    функция триггера после возвращения HttpResponse из представления django

    использовать python для генерации графика в excel

    Получить первую ссылку в статье в Википедии не в круглых скобках

    Как преобразовать текущую дату в временную метку эпохи?

    Python Multiprocessing: AttributeError: объект 'Test' не имеет атрибута 'get_type'

    Создание автономного приложения с Cython + MinGW

    Существует ли способ, с помощью которого я могу использовать классы WMI в java

    Использование python-ctypes для взаимодействия fortran с python

    Установить атрибут «Только для чтения» в Python?

    Почему бы не использовать утверждение assert python в тестах в наши дни?

    Невозможно добавить собственные заголовки запросов в PyQT4

    Учебное пособие по запуску scrapy: ошибка при выполнении этой команды

    Объединение списка объектов python с помощью метода __str__

    Python - лучший язык программирования в мире.