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.py
olarak yerini cmd
ve filename
konum olarak args
çalışmıyor. Ben geçmelidir söylendi python.exe
olarak cmd
ve daha sonra, code.py filename
sı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);
}
}