-3

我是 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)
4

1 回答 1

1

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

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

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

cidrs = netaddr.iprange_to_cidrs(sys.argv[1], sys.argv[2])

就像其他人已经令人信服地争论一样。

于 2013-09-05T19:08:48.813 回答