python-如何将optparse()代码升级到argparse()代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-如何将optparse()代码升级到argparse()代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2411字,纯文字阅读大概需要4分钟。
内容图文
![python-如何将optparse()代码升级到argparse()代码](/upload/InfoBanner/zyjiaocheng/681/d6c98883abfe406cbb644518843e3b5f.jpg)
我正在尝试从现已弃用的optparse模块升级到新的argparse模块.但是我在升级代码时遇到了一些麻烦.我一直在使用pythons文档来做到这一点,但我似乎遇到了麻烦.
这是使用optparse模块的原始代码片段
if __name__ == "__main__":
parser = optparse.OptionParser(usage="%prog [options] hostname")
parser.add_option("-p","--port", dest="port",
help="Port to use for socket connection [default: %default]",
default=33434, metavar="PORT")
parser.add_option("-m", "--max-hops", dest="max_hops",
help="Max hops before giving up [default: %default]",
default=30, metavar="MAXHOPS")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error('Incorrect number of arguments')
else:
dest_name = args[0]
sys.exit(main(dest_name=dest_name,
port=int(options.port),
max_hops=int(options.max_hops)))
现在这是我能够执行的部分升级代码
if __name__ == "__main__":
parser = argparse.ArgumentParser(usage="%(prog)s [options] hostname")
parser.add_argument("-p","--port", dest="port",
help="Port to use for socket connection [default: %(default)s]",
default=33434, metavar="PORT")
parser.add_argument("-m", "--max-hops", dest="max_hops",
help="Max hops before giving up [default: %(default)s]",
default=30, metavar="MAXHOPS")
args = parser.parse_args()
if len(sys.argv) != 1:
parser.error('Incorrect number of arguments')
else:
dest_name = sys.argv
sys.exit(main(dest_name=dest_name,
port=int(options.port),
max_hops=int(options.max_hops)))
当我尝试运行代码时,我不断收到此错误:
*port=int(options.port),
NameError: name 'options' is not defined*
在optparse()模块中,我在这里定义了它
(options, args) = parser.parse_args()
当我尝试以与optparse模块相同的方式定义它时,它给了我另一个错误:
*TypeError: 'Namespace' object is not iterable*
(我知道argparse模块中的(options,args)= parser.parse_args()更改为args = parser.parse_args().我只是在四处寻找解决方案.这时我很沮丧
最后,我尝试将port = int(options.port)中的’options’更改为port = int(args.port),这给了我更多的错误.阅读有关将optparse升级到argparse的文档后,我想我可能知道问题所在.文档说明
“替换选项,用args = parser.parse_args()替换args = parser.parse_args(),并为位置参数添加其他add_argument()调用.”
所以我认为我的问题是我没有为位置参数添加额外的add_argument()调用.由于我是新手,并且仍在尝试学习python解析模块,因此我不知道该怎么做.
解决方法:
摆脱这种optparse粗俗的说法:
if len(sys.argv) != 1:
parser.error('Incorrect number of arguments')
else:
dest_name = sys.argv
并添加一个位置参数
parser.add_argument('hostname')
...
dest_name = args.hostname
内容总结
以上是互联网集市为您收集整理的python-如何将optparse()代码升级到argparse()代码全部内容,希望文章能够帮你解决python-如何将optparse()代码升级到argparse()代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。