前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >解决SystemExit: 2,args = parser.parse_args() 的问题,

解决SystemExit: 2,args = parser.parse_args() 的问题,

作者头像
汀丶人工智能
发布于 2022-12-21 09:31:48
发布于 2022-12-21 09:31:48
1.8K00
代码可运行
举报
文章被收录于专栏:NLP/KGNLP/KG
运行总次数:0
代码可运行

报错:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 File "/home/barry/PycharmProjects/EEPC/detect.py", line 283, in parse_opt
    opt = parser.parse_args()
  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 1823, in parse_args
    self.error(msg % ' '.join(argv))
  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 2577, in error
    self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 2564, in exit
    _sys.exit(status)
SystemExit: 2

原因:

报错原因: argparse 是一个旨在解析从命令行传递的参数的模块,您可以使用 argparse 来编译 参数内容。如果 argparse 认为参数无效,则退出,这通常在 python 中通过调用 sys.exit() 来完成,这会引发 SystemExit 错误,这就是您所看到的。 所以问题是你试图从交互式解释器(看起来像 ipython)中使用 argparse,此时程序已经启动,所以应该已经解析了 args。

解决方法一:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
args = parser.parse_args()
改成
args = parser.parse_args(args=[])

原因分析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
args = parser.parse_args()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2.parse_args(args=["-n3""-b2"])#表示给n参数赋值为3,b参数赋值为2。其他参数默认。
parse_args(args=[])#表示所有参数使用默认。

而我们的报错情况是形式1,一旦执行parse_args()语句,python系统就会执行读取参数的操作(我们看不到),此时jupyter notebook系统默认会给一个奇怪的参数:

因此:

将parse_args()由形式1换成形式2。

最后一行换成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse


parser = argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n", "--num-epochs", default=5, type=int)
parser.add_argument("-t", "--num-iters", default=60, type=int)
parser.add_argument("-b", "--batch-size", default=1000, type=int)
parser.add_argument("-lr", "--learning-rate", default=0.01, type=float)


args = parser.parse_args(args=[])

解决方案二:

删除参数required=True,如果还不行的话按照再按照方法一方法添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
parser.add_argument("--model_path", type=str, required=True, default='/mnt/data_1/', help="The path to model parameters to be loaded.")


parser.add_argument("--model_path", type=str, default='/mnt/data_1/', help="The path to model parameters to be loaded.")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
args = parser.parse_args(args=[])

解决方案三:

开头添加:

参考链接:

python - SystemExit: 2 error when calling parse_args() within ipython - Stack Overflow

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
sys.argv=['']
del sys

解决方法四:

添加一个接受上面那个参数的语句。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
parser.add_argument('-f', type=str, default="读取额外的参数")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse


parser = argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")
parser.add_argument("-n", "--num-epochs", default=5, type=int)
parser.add_argument("-t", "--num-iters", default=60, type=int)
parser.add_argument("-b", "--batch-size", default=1000, type=int)
parser.add_argument("-lr", "--learning-rate", default=0.01, type=float)


parser.add_argument("-f","--file",default="file")#接收这个-f参数
args = parser.parse_args()
print(args.file)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python argparse标准库快速入门
Python是一门非常好用的脚本语言,自然使用它来开发命令行程序也比较方便。而且Python的标准库中有一个名为argparse的库,可以非常方便的让我们把命令行参数转换成所需的数据格式。下面就让我们来看看如何使用argparse标准库吧。
乐百川
2020/02/18
9160
python--配置文件以及ConfigParser使用
在项目中通常我们把超参,魔数等需要配置项写入一个配置文件中,方便配置项调整。python项目中通用的配置文件格式有py.ini,json,yml。本文对这些常用形式的配置进行详细讲解。
languageX
2023/01/03
1.5K0
Python argparse 模块
这篇文章主要是对 argparse(Python标准库中推荐的命令行解析模块) 进行简要介绍。原英文链接如下:
用户7685359
2020/08/21
1.1K0
Python笔记:外部参数传入考察(一)argparse库
在编程中,我们往往会遇到需要通过外部参数来控制脚本运行模式的情况,在通用的框架类代码中,这种情况尤为明显,因此,这里,我们来考察一下如何将参数传入到脚本文件中,而不是作为固定参数写死在脚本当中。
codename_cys
2021/03/25
4.4K0
Python解析命令行读取参数 — argparse模块
在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包使得这一工作变得简单而规范。PS:optparse包是类似的功能,只不过写起来更麻烦一些。
全栈程序员站长
2022/07/19
7860
python的argparse模块add_argument详解
nargs: 当选项后接受多个或者0个参数时需要这个来指定 比如-u选项接受2个参数
狼啸风云
2020/02/13
7K0
【转】Python 模块简介 -- argparse
argparse 是 Python 标准库中用来解析命令行参数和选项的模块,其是为替代已经过时的 optparse 模块而生的,该模块在 Python2.7 中被引入。argparse模块的作用是用于解析命令行参数。
marsggbo
2020/03/17
2.6K1
python学习之argparse模块
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。
py3study
2020/01/09
1.9K0
python argparse使用
 在不同环境部署项目时,由于不同的配置,部署时难免会改变部署的方式,而且基本使用版本管理工具,比如git或svn进行下拉代码部署项目时,尽可能的不变动代码(如果变动代码,下次下拉代码前必须要使用git reset --hard命令恢复代码,较为麻烦)而达到成功部署的目的。
用户1558882
2019/03/19
9740
Python 基础(二十一):argparse 模块
argparse 模块主要用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。使用 argparse 模块,我们可以轻松的编写出用户友好的命令行接口。
Python小二
2020/08/18
6120
Python 命令行之旅:初探 argparse
花下猫语:国庆期间,公众号停更了几天,那是因为我去江西参加婚礼了,如今正在写“观感”呢(写完后会发在文艺号“豌豆花”上)。所以,原创文章要再拖一下了。
Python猫
2019/10/14
6910
Python 命令行之旅:初探 argparse
【测试开发】python系列教程:argparse 模块
在命令行程序中,经常需要获取命令行参数。Python内置的sys.argv保存了完整的参数列表,我们可以从中解析出需要的参数:
雷子
2023/08/25
1940
【测试开发】python系列教程:argparse 模块
python3实现图片转字符画
用练习学习python3. #!/usr/bin/env python3 #-*- coding:utf-8 -*- from PIL import Image import argparse ''' argparse模块使得编写用户友好的命令行接口非常容易。程序只需定义好它要求的参数,然后argparse将负责如何从sys.argv中解析出这些参数。argparse模块还会自动生成帮助和使用信息并且当用户赋给程序非法的参数时产生错误信息。 使用步骤: 1、导入模块 import argparse 2、
py3study
2020/01/03
7980
python argparse例子
arg_1 #!/usr/bin/python #coding=utf-8 import argparse def parse_args():     description = "usage: % prog[options]"     parser = argparse.ArgumentParser(description=description)     parser.add_argument('addresses', nargs='*', help='help')     parser.add_arg
py3study
2020/01/07
1K0
parser.add_argument()用法——命令行选项、参数和子命令解析器
argparse是一个Python模块:命令行选项、参数和子命令解析器。通过使用这种方法,可以在使用
汀丶人工智能
2022/12/21
2.8K0
Python的命令行参数解析
命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse。下面主要介绍两种解析Python命令行参数的方式。 1. sys.argv 解析Pyth
Tyan
2017/12/28
1.7K0
python-argparse
在python程序中,第一步就是获取参数,然后程序才能执行。对于简单的程序脚本,可以直接使用sys.argv[] 来获取命令行参数,但是应用到大的软件项目中,我们需要更加规范,更加方便而功能强大工具来处理命令行参数,本文主要介绍python标准库argparse的简单使用,详细方法及示例请参考python标准库
零式的天空
2022/03/02
8050
python 模块argparse用法实
 argparse是python内置模块,用于快速创建命令行。有一个第三方模块Click也可以实现这个功能,两者各有优缺点,看个人需求吧。
py3study
2020/01/10
4730
Python 模块:argparse
argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
不可言诉的深渊
2019/07/26
2.6K0
Python3 命令行参数解析
在模型训练程序中,我们经常要配置命令参数,这里可用到 argparse 模块,它是 Python 内置的一个用于命令选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。 使用 argparse 模块解析命令行参数,主要分三个步骤:创建解析器、添加参数、解析参数,步骤如下:
嵌入式视觉
2022/09/05
1.3K0
相关推荐
Python argparse标准库快速入门
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文