Bu tür bir soru daha önce çeşitli derecelerde sorulmuştu, ancak kısa bir şekilde yanıtlanmadığını hissediyorum ve bu yüzden tekrar soruyorum.
Python'da bir komut dosyası çalıştırmak istiyorum. Diyelim ki bu:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
Dosya konumu alır, okur ve ardından içeriğini yazdırır. O kadar karmaşık değil.
Tamam, peki bunu C # 'da nasıl çalıştırırım?
Şu an sahip olduğum şey bu:
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);
}
}
}
Ben geçtikten sonra code.pyolarak yerini cmdve filenamekonum olarak argsçalışmıyor. Ben geçmelidir söylendi python.exeolarak cmdve daha sonra, code.py filenamesıra args.
Bir süredir arıyordum ve sadece IronPython veya benzeri kullanmayı öneren kişileri bulabiliyorum. Ancak C # 'dan bir Python betiğini çağırmanın bir yolu olmalı.
Bazı açıklamalar:
C # üzerinden çalıştırmam gerekiyor, çıktıyı yakalamam gerekiyor ve IronPython veya başka bir şey kullanamıyorum. Sahip olduğunuz hack ne olursa olsun iyi olacak.
Not: Çalıştırdığım gerçek Python kodu bundan çok daha karmaşık ve C # 'da ihtiyacım olan çıktıyı döndürüyor ve C # kodu sürekli olarak Python kodunu çağırıyor olacak.
Bunun benim kodum olduğunu farz et:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}