首页 > 解决方案 > 无法从 ant build.xml 文件向 pythonscript 传递参数。我怎样才能传递价值?

问题描述

我试图在运行 build.xml 文件时从我的 ant build.xml 文件运行 python 程序我无法将参数传递给 python 脚本

用于检查给定数字的阶乘的 Python 程序:

事实.py

#!/usr/bin/python

def factorial(num):
    if num == 1:
        return num
    else:
        return num * factorial(num - 1)

 num = int(input('Enter a Number: '))
 if num < 0:
     print 'Factorial cannot be found for negative numbers'
 elif num == 0:
     print 'Factorial of 0 is 1'
 else:
     print ('Factorial of', num, 'is: ', factorial(num))

build.xml 文件如下所示:

<project name="ant_test" default="python" basedir=".">
<target name="python" >
        
        <exec dir="D:\app\python" executable="D:\app\python\python.exe" failonerror="true">
            <arg line="D:\app\ant-workout\fact.py/>
        </exec>
</target>

当运行 build.xml 文件时,它运行 fact.py python 程序,它期望用户输入来检查给定数字的阶乘。

如何将数字从 ant build.xml 文件传递​​给 python 程序

提前致谢!!!!!

标签: pythonxmlbuildant

解决方案


根据文档

请注意,您不能与分叉程序进行交互,向其发送输入的唯一方法是通过inputinputstring属性。另请注意,从 Ant 1.6 开始,任何在分叉程序中读取输入的尝试都将收到 EOF (-1)。这是对 Ant 1.5 的更改,在 Ant 1.5 中,这样的尝试会被阻止。 (强调我的)

所以,你可以做什么?提供以下任一项:

input
一个文件,执行命令的标准输入从该文件中获取。此属性与 inputstring 属性互斥。

inputstring
一个字符串,用作执行命令的输入流。该属性与输入属性互斥。


例子:

<project name="ant_test" default="python" basedir=".">
<target name="python" >
        
        <exec dir="D:\app\python" executable="D:\app\python\python.exe" 
                                  failonerror="true" 
                                  inputstring="42">
            <arg line="D:\app\ant-workout\fact.py/>
        </exec>
</target>

推荐阅读