Python argparse错误: 错误:参数计数:无效的整数值

4

我正在尝试在Jupyter笔记本中运行以下代码。

import argparse
parser = argparse.ArgumentParser(description='Example with non-optional arguments')
parser.add_argument('count', action="store", type=int)
parser.add_argument('units', action="store")
print(parser.parse_args())

但是这会导致以下错误:
usage: ipykernel_launcher.py [-h] count units
ipykernel_launcher.py: error: argument count: invalid int value: 'C:\\Users\\Kwan Lee\\AppData\\Roaming\\jupyter\\runtime\\kernel-76bf5bb5-ea74-42d5-8164-5c56b75bfafc.json'
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2


c:\users\kwan lee\anaconda2\envs\tensorflow\lib\site-packages\IPython\core\interactiveshell.py:2971: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

我只是想学习argparse是什么,但我不明白这个错误。


可能是[如何在iPython笔记本中调用使用argparse编写的模块]的重复问题(https://dev59.com/-V0a5IYBdhLWcg3wJlyo)。 - sal
notebook 中,您需要使用模拟的字符串列表调用它,如 parser.parse_args(['5', 'inches'])。因为用于运行笔记本的 sys.argv 对于此脚本来说不是正确的。 - hpaulj
3个回答

1
通常这样的脚本是作为独立文件运行的,例如:
python foo.py 23 inches

程序中有一个字符串列表,可以通过sys.argv[1:]获取。Shell将'23英寸'转换为该列表的一部分。
parser.parse_args()

默认情况下,该脚本使用 sys.argv[1:]。但是当在Ipython会话或笔记本中运行时,该列表具有初始化会话的值。给定的文件名作为无效整数值是该初始化的一部分,并且不能被您的parser使用。

要测试此脚本,您需要提供相关的字符串列表,例如:

parser.parse_args(['23', 'lbs'])

或者导入sys并按照链接答案中的描述修改sys.argv

https://docs.python.org/3/library/argparse.html#beyond-sys-argv


0

在你的情况下,代码应该像这样:

import argparse
parser = argparse.ArgumentParser(description='Example with non-optional arguments')
parser.add_argument('--count', action="store", type=int)
parser.add_argument('--units', action="store")
parser.add_argument("-f", required=False)
print(parser.parse_args())

已在Google Colab上进行测试


0

替换

parser.add_argument('count', action="store", type=int)

使用

parser.add_argument('--count', action="store", type=int)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接