我正在尝试将变量值作为参数传递给我在for循环中调用的函数。不知何故,在我打印变量值时调用函数它们显示正常,但它们没有被传递到函数中,因为我得到的索引超出范围:0表示没有传递任何内容。研究没有用...你的帮助非常感谢。 代码是:
for clx in root.findall('sample'):
CName = clx.find('Name').text
No01 = clx.find('First').text
No02 = clx.find('Second').text
print "Cname provided is" +CName
print "First is" +No01
print "Second is" +No02
createCluster(CName, No01, No02)
createCluster:
def createCluster(CName, No01, No02):
print len(sys.argv)
ClsName=sys.argv[0]
Node01=sys.argv[1]
Node02=sys.argv[2]
错误:
Traceback (most recent call last):
File "<string>", line 20, in <module>
File "createCluster.py", line 8, in createCluster
ClsName=sys.argv[0]
IndexError: index out of range: 0
答案 0 :(得分:0)
您没有正确提取传递给方法的参数。在Python中,您只需使用您在方法中定义的参数,如下所示:
def createCluster(CName, No01, No02):
print(CName)
print(No01)
print(No02)
createCluster('a', 'b', 'c')
以上将输出
a
b
c
对于您使用sys.argv
时使用不当的问题:
sys.argv上的文档片段
传递给Python脚本的命令行参数列表。
例如,在从shell提示符调用代码时:
python your_script.py a b c
在your_script.py
里面你会发誓
import sys
script_name = sys.argve[0]
arg1 = sys.argv[1]
arg2 = sys.argv[2]
arg3 = sys.argv[3]
将输出:
/absolute/path/to/your_script.py
a
b
c
所以,你在这里看到它最终会给你脚本和所有参数的名称。
这可能是您在调用脚本和调用脚本中的方法之间产生混淆的地方。