Как вызвать из C # скрипт Python со многими функциями? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь вызвать из C # скрипт Python, разделенный на множество функций. С этими частями кода вывод пуст.

import sys
def main():
    print('Hello')
    if len(sys.argv) >=3:
        x = sys.argv[1]
        y = sys.argv[2]
        # print concatenated parameters
        main2(x,y)
def main2(x,y):
    print(x+y)
if __name__=='__main__':
    main()

C #:

int x = 1;
int y = 2;
string progToRun = "main.py";
Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files\Python37\python.exe";
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.Arguments = string.Concat(progToRun, " ", x.ToString(), " ", y.ToString());
proc.Start();
StreamReader sReader = proc.StandardOutput;
string output = sReader.ReadToEnd();
proc.WaitForExit();
Console.ReadLine();

С этим скриптом Python он работает:

import sys

def main():
    print('Hello')
    if len(sys.argv) >=3:
        x = sys.argv[1]
        y = sys.argv[2]
        # print concatenated parameters
        print(x+y)


if __name__=='__main__':
    main()

В чем разница между двумя сценариями pyhton? Как я могу использовать в C # Python скрипт со многими функциями? Могу ли я выполнить скрипт Python без отправки параметров (x и y)?

Спасибо.

1 Ответ

1 голос
/ 10 апреля 2019

В основном, в вашем первом блоке кода Python вы получаете ошибку local variable 'x' referenced before assignment Ваш отступ для звонка на main2(x,y) на 1 уровень назад.

Вы хотите добавить уровень отступа к подобному main2(x,y)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...