【发布时间】:2017-03-31 18:12:41
【问题描述】:
上面出现错误,代码如下:
import optparse
import socket
from socket import *
from threading import *
def main():
parser =optparse.OptionParser('usage%prog -H <target host> -p <target port>')
parser.add_option('-p',dest='tgtPort',type='string',help='specific target port separated by comma')
(options, args) = parser.parse_args()
tgtPorts = str(options.tgtPort).split(', ')
for p in tgtPorts:
print int(p)
if __name__ == '__main__':
main()
当我尝试实施时:
python testInt.py -p 20, 80
预期结果:
20 80
【问题讨论】:
-
只是在您的论点的帮助文本中说
separated by comma并不会使argparse实际上以您想要的方式处理逗号分隔的论点。哎呀,即使在参数到达argparse之前,shell 的命令行拆分也无法按照您想要的方式工作。tgtPort是"20,","80"最终成为args的一个元素。 -
(哦,optparse,不是 argparse。不过,optparse 和 shell 的命令行拆分都不会做你想做的事情。)
-
argparse提供了一些可以提供帮助的工具,特别是如果您不想引用您的论点,但逗号分隔的论点处理会很尴尬。外壳是围绕空间分隔设计的。 -
@user2357112 非常感谢您的可靠解释。现在我对此有了更好的理解。
-
@user2357112 我正在做一个工具,我从一本书中学到了它,它做同样的事情但它有效,lmao。我想知道为什么它对我不起作用并试图抓住它。好的,还是谢谢/