Такого рода вопрос уже задавался в той или иной степени, но я чувствую, что на него не был дан краткий ответ, и поэтому я задаю его снова.
Я хочу запустить скрипт на 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 или что-то еще. Какой бы хак у вас ни был, все будет в порядке.
P.S. :Фактический код Python, который я запускаю, намного сложнее, чем этот, и он возвращает вывод, который мне нужен, на C #, а код C #будет постоянно вызывать Python.
Представь, что это мой код:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}