python将变量传递给函数问题

时间:2013-09-05 18:38:23

标签: python

我是python的新手,但它适用于不同的语言。

#!/usr/bin/python
import sys
import netaddr
print(sys.argv[1])
cidrs = netaddr.iprange_to_cidrs(sys.argv[1])
print cidrs

输出:

./script.py \"223.252.0.0\",\"223.252.127.255\"
"223.252.0.0","223.252.127.255"
Traceback (most recent call last):
  File "./script.py", line 7, in <module>
    cidrs = netaddr.iprange_to_cidrs(sys.argv[1])
TypeError: iprange_to_cidrs() takes exactly 2 arguments (1 given)

1 个答案:

答案 0 :(得分:1)

如果您真的坚持使用包含逗号的单个命令行参数,

#!/usr/bin/python
import sys
import netaddr
input = sys.argv[1].split(",")
print("%r" % input)
cidrs = netaddr.iprange_to_cidrs(*input)
print cidrs

这将创建一个包含sys.argv[1]单个字符串中两个字符串的Python列表,并将其传递给iprange_to_cidrs。这仅在第一个参数中只有一个逗号时才有效。我的建议是使用

cidrs = netaddr.iprange_to_cidrs(sys.argv[1], sys.argv[2])
像其他人一样已经开始争论。