将两个参数(日期)从C传递到python脚本

2024-09-30 03:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用visualstudio12创建使用C的表单。我成功地将一个参数从C传递给python。我没有用铁蟒。我正在处理的新应用程序需要向python传递两个参数。这两个参数都是用户选择的日期。 enter image description here

这是我捕获参数并将它们传递给Python的代码。在

   private void button1_Click(object sender, EventArgs e)
    {
        dbegin = PublicVars.g_begindate;
        dend = PublicVars.g_enddate;

        CallPython python = new   CallPython(@"C:\Python27\ArcGIS10.3\python.exe");
           python.Run_Script(@"\\gisdb01\gis\tools\Python\TA_Report\Update_4_Road.pyc", dbegin dend);

        this.Close();
    }

    private void dateTimePickerBegin_ValueChanged(object sender, EventArgs e)
    {
        PublicVars.g_begindate = dateTimePickerBegin.Text;
    }

    private void dateTimePickerEnd_ValueChanged(object sender, EventArgs e)
    {
        PublicVars.g_enddate = dateTimePickerEnd.Text;

所发生的错误会突出显示“dend”,并给出“)期望值”。我试过在dbegin和dend之间加上“’和逗号,但似乎不能让它起作用。在

我调用Python代码:

^{pr2}$

任何帮助都将不胜感激。在


Tags: 代码参数objectprivatesendervoidvaluechangedenddate
2条回答

您的问题是您只在一个参数中传递两个变量。如果函数接受更多参数,可以在它们之间添加一个简单的逗号。在

CallPython python = new   CallPython(@"C:\Python27\ArcGIS10.3\python.exe");
          python.Run_Script(@"\\gisdb01\gis\tools\Python\TA_Report\Update_4_Road.pyc", dbegin, dend);

如果只能传递一个参数,我建议将dbegin和dend变量连接在一个变量中,然后在python端,如果需要,可以将它们再次分隔成两个不同的变量。在

如果dbegin和dend是字符串,可以按如下方式进行操作。在

^{pr2}$

如果它们是另一种类型,则可以将它们转换为字符串,然后将它们连接起来。在

我将更改RunScript以接受带有params修饰符的参数数组。在

public void Run_Script(string scriptPathName, params object[] arguments)

那就换这条线

^{pr2}$

为了这个

processStartInfo.Arguments = scriptPathName + " " + string.Join(" ", arguments);

因此它将包括脚本名称和传递给它的参数。 然后这样调用它(params意味着您可以列出任意多个参数。在

python.Run_Script(@"\\gisdb01\gis\tools\Python\TA_Report\Update_4_Road.pyc", dbegin, dend);

相关问题 更多 >

    热门问题