如何使用IronPython从Python文件获取变量 - c#

我想从我的Python文件中获取一个变量并将其写入控制台
这是我尝试过的:

main.py

myVar = "Hello There"

program.cs

using System;
using IronPython.Hosting;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var py = Python.CreateEngine();

            var pythonVariable = py.ExecuteFile("main.py");
            Console.WriteLine(pythonVariable);

            Console.Read();

        }
    }
}

我希望输出是“ Hello There”,但我得到了:“ Microsoft.Scripting.Hosting.ScriptScope”

参考方案

您得到的输出暗示您必须寻找的内容。 ExecuteFile返回一个ScriptScope,其中包含在已执行的Python代码中定义的所有变量。

为了从中检索特定变量,您需要使用GetVariableTryGetVariable(如果该变量可能不存在于文件中),例如:

using System;
using IronPython.Hosting;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var py = Python.CreateEngine();

            var pythonVariable = py.ExecuteFile("main.py").GetVariable<string>("myVar");
            Console.WriteLine(pythonVariable);

            Console.Read();

        }
    }
}

请注意,我使用GetVariable的通用版本将其立即转换为string。非通用版本返回一个dynamic对象,根据您打算如何使用该变量来选择所需的对象

Python-crontab模块 - python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…

Python Pandas导出数据 - python

我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python:在不更改段落顺序的情况下在文件的每个段落中反向单词? - python

我想通过反转text_in.txt文件中的单词来生成text_out.txt文件,如下所示:text_in.txt具有两段,如下所示:Hello world, I am Here. I am eighteen years old. text_out.txt应该是这样的:Here. am I world, Hello old. years eighteen a…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…