gpt4 book ai didi

c# - Python 在控制台应用程序中执行外部 Python 脚本

转载 作者:行者123 更新时间:2023-11-30 23:15:42 30 4
gpt4 key购买 nike

这是我从控制台应用程序中找到的代码示例 here .

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 尝试执行存储在控制台应用程序窗口内名为 GuessingGameOne.py 的外部文件中的 Python 脚本。

    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(如上所示)并在控制台窗口中运行它?

最佳答案

我没有测试这段代码,但我在这里找到了类似的答案:

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);
}

您没有做的是指定要执行的文件位置。

关于c# - Python 在控制台应用程序中执行外部 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42356782/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com