2017-02-21 19 views
2

Вот пример кода из Консольного приложения, которое я нашел here.Python выполнить внешний скрипт Python в приложении консоли

static void Main(string[] args) 
    { 

     int a = 1; 
     int b = 2; 

     Microsoft.Scripting.Hosting.ScriptEngine py = Python.CreateEngine(); // allow us to run ironpython programs 
     Microsoft.Scripting.Hosting.ScriptScope s = py.CreateScope(); // you need this to get the variables 
     py.Execute("x = "+a+"+"+b,s); // this is your python program 
     Console.WriteLine(s.GetVariable("x")); // get the variable from the python program 
     Console.ReadLine(); // wait for the user to press a button 
    } 

Я использую IronPython, чтобы попытаться выполнить Python скрипт, хранящийся в внешнем файле, называемом GuessingGameOne.py внутри окна приложения консоли.

import random 

def main(): 
    randomnumber = random.randint(1, 100) 
    matched = False 
    count = 0 
    while (matched == False): 
     inputnumber = input('Choose a number: ')   
     try: 
      count = count+1 
      inputnumber = int(inputnumber) 
      if inputnumber > 0 and inputnumber < 101: 
       comparenumber = inputnumber - randomnumber 
       if comparenumber == 0:     
        print("You guessed it. It took you " + str(count) + " guesses") 
        matched = True 
       elif comparenumber < 0: 
        print("Guess is too low") 
       else:     
        print("Guess is too high") 
      else: 
       print("Your guess must be between 1 and 100") 

     except ValueError: 
      print("Invalid Entry: Your guess must be a number") 

if __name__ == "__main__": 
    main() 

Как я могу изменить Main(string[] args) вызвать скрипт GuessingGameOne.py (показано выше) и запустить его в окне консоли?

+0

Вы должны попытаться понять, что делает этот кусок кода, прежде чем отправлять вопрос SO. –

ответ

2

Я не проверял этот код, но я нашел подобный ответ здесь:

https://stackoverflow.com/a/30385400/5258056

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.IO; 
using System.Text; 
using IronPython.Hosting; 
using Microsoft.Scripting; 
using Microsoft.Scripting.Hosting; 
using IronPython.Runtime; 

static void Main(string[] args) 
     { 
      ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(null); 
      ScriptRuntime runtime = new ScriptRuntime(setup); 
      ScriptEngine engine = Python.GetEngine(runtime); 
      ScriptSource source = engine.CreateScriptSourceFromFile("GuessingGameOne.py"); 
      ScriptScope scope = engine.CreateScope(); 

      // You don't need this section, but added in case 
      // you decide to use it later. 
      List<String> argv = new List<String>(); 
      //Do some stuff and fill argv 
      argv.Add("foo"); 
      argv.Add("bar"); 
      engine.GetSysModule().SetVariable("argv", argv); 

      // You will need this though.... 
      source.Execute(scope); 
     } 

То, что вы не делаете, указав местоположение файла для выполнения.

 Смежные вопросы

  • Нет связанных вопросов^_^