我正在学习Python的基础知识,并且已经陷入了Argparse教程的开头.我收到以下错误:
import argparse
parser = argparse.ArgumentParser()
args = parser.parse_args()
usage: __main__.py [-h] echo
__main__.py: error: unrecognized arguments: -f
An exception has occurred, use %tb to see the full traceback.
SystemExit: 2
Run Code Online (Sandbox Code Playgroud)
a%tb命令提供以下输出:
SystemExit Traceback (most recent call last)
<ipython-input-16-843cc484f12f> in <module>()
----> 1 args = parser.parse_args()
C:\Users\Haik\Anaconda2\lib\argparse.pyc in parse_args(self, args, namespace)
1702 if argv:
1703 msg = _('unrecognized arguments: %s')
-> 1704 self.error(msg % ' '.join(argv))
1705 return args
1706
C:\Users\Haik\Anaconda2\lib\argparse.pyc in error(self, message)
2372 """
2373 self.print_usage(_sys.stderr)
-> 2374 self.exit(2, _('%s: error: %s\n') % (self.prog, message))
C:\Users\Haik\Anaconda2\lib\argparse.pyc in exit(self, status, message)
2360 if message:
2361 self._print_message(message, _sys.stderr)
-> 2362 _sys.exit(status)
2363
2364 def error(self, message):
SystemExit: 2
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?谢谢
dap*_*azz 17
argparse是一个用于解析从命令行传递的参数的模块,例如,如果在命令提示符下键入以下内容:
$ python my_programme.py --arg1=5 --arg2=7
Run Code Online (Sandbox Code Playgroud)
您可以使用它argparse来解释该--arg1=5 --arg2=7部分.如果argparse认为参数是无效的,它会退出,这通常是在python中通过调用sys.exit()来引发SystemExit错误,这就是你所看到的.
所以问题是你试图使用argparse交互式解释器(看起来像ipython),此时程序已经启动,所以args应该已经被解析了.
如图所示,要正确地尝试创建一个单独的python文件,my_programme.py并使用python命令行运行它.
joh*_*ual 16
[快速解决方案] 在代码中添加一个虚拟解析器参数
parser.add_argument('-f')
Run Code Online (Sandbox Code Playgroud)
小智 14
遇到了类似的问题。添加这些行为我解决了这个问题。
import sys
sys.argv=['']
del sys
Run Code Online (Sandbox Code Playgroud)
Fra*_*sco 10
我很惊讶没有人在这里提到这个答案How to fix ipykernel_launcher.py: error: unrecognized argument in jupyter?
没有必要争论-f。此外,该-f技巧适用于 Jupyter,但不适用于 VS code。
太长了;博士
使用
args, unknown = parser.parse_known_args()
Run Code Online (Sandbox Code Playgroud)
代替
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
parse_args方法,当它被无参数调用时,会尝试解析sys.argv. 您的解释器进程填充了sys.argv与您的parser实例支持的参数不匹配的值,这就是解析失败的原因。
尝试打印sys.argv以检查传递给解释器进程的参数。
尝试调用parser.parse_args(['my', 'list', 'of', 'strings'])以查看解析器如何为使用不同 cmdline 参数启动的解释器工作。
| 归档时间: |
|
| 查看次数: |
24449 次 |
| 最近记录: |