Loại câu hỏi này đã được hỏi trước đây ở các mức độ khác nhau, nhưng tôi cảm thấy nó chưa được trả lời một cách súc tích và vì vậy tôi hỏi lại.
Tôi muốn chạy một kịch bản trong Python. Hãy nói rằng đây là:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
Mà có được một vị trí tập tin, đọc nó, sau đó in nội dung của nó. Không quá phức tạp.
Được rồi, vậy làm thế nào để tôi chạy cái này trong C #?
Đây là những gì tôi có bây giờ:
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);
}
}
}
Khi tôi vượt qua code.py
vị trí cmd
và filename
vị trí như args
nó không hoạt động. Tôi đã nói tôi nên vượt qua python.exe
như là cmd
, và sau đó code.py filename
là args
.
Tôi đã tìm kiếm một thời gian và chỉ có thể tìm thấy những người đề xuất sử dụng IronPython hoặc như vậy. Nhưng phải có cách gọi tập lệnh Python từ C #.
Một số làm rõ:
Tôi cần chạy nó từ C #, tôi cần nắm bắt đầu ra và tôi không thể sử dụng IronPython hoặc bất cứ thứ gì khác. Dù bạn có hack thì cũng sẽ ổn thôi.
PS: Mã Python thực tế tôi đang chạy phức tạp hơn nhiều so với mã này và nó trả về đầu ra mà tôi cần trong C # và mã C # sẽ liên tục gọi mã Python.
Giả vờ đây là mã của tôi:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}