Такого рода вопрос уже задавался в разной степени, но я чувствую, что на него не дан краткий ответ, и поэтому я задаю его еще раз.
Я хочу запустить скрипт на Python. Позвольте сказать это так:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
Который получает местоположение файла, читает его, затем печатает его содержимое. Не так сложно.
Хорошо, так как мне запустить это в С#?
Вот что у меня сейчас:
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
местоположение code.py
как cmd
а расположение filename
как args
оно не работает. Мне сказали, что я должен передать python.exe
в качестве cmd
, а затем code.py filename
в качестве args
.
Я давно искал и могу найти только людей, предлагающих использовать IronPython или что-то подобное. Но должен быть способ вызова скрипта Python из С#.
Некоторые уточнения:
Мне нужно запустить его из С#, мне нужно захватить вывод, и я не могу использовать IronPython или что-либо еще. Какой бы взлом у вас ни был, все будет хорошо.
PS: Фактический код Python, который я запускаю, гораздо более сложен, чем этот, и он возвращает вывод, который мне нужен в С#, и код С# будет постоянно вызывать Python.
Притворись, что это мой код:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}