Такого рода вопросы задавались раньше в разной степени, но я чувствую, что на него нет краткого ответа, поэтому я задаю его снова.
Я хочу запустить скрипт на Python. Скажем так:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
Которая получает местоположение файла, читает его, а затем печатает его содержимое. Не все так сложно.
Итак, как мне запустить это на C #?
Вот что у меня есть сейчас:
private void run_cmd(string cmd, string args)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = cmd;
start.Arguments = args;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
}
Когда я передаю code.py
место как cmd
и filename
место, как args
это не работает. Мне сказали, что я должен пройти python.exe
как то cmd
, а затем code.py filename
как args
.
Я давно искал и могу найти только людей, предлагающих использовать IronPython или что-то подобное. Но должен быть способ вызвать скрипт Python из C #.
Некоторые пояснения:
Мне нужно запустить его с C #, мне нужно записать вывод, и я не могу использовать IronPython или что-то еще. Какой бы хак у вас ни был, все будет в порядке.
PS: Фактический код Python, который я запускаю, намного сложнее, чем этот, и он возвращает результат, который мне нужен на C #, а код C # будет постоянно вызывать код Python.
Представьте, что это мой код:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}