遇到的问题
1 2 3 |
import argparse parser = argparse.ArgumentParser() parser.parse_args() |
运行报错,提示:
1 2 3 4 5 6 7 8 9 10 |
usage: __main__.py [-h] [--num-steps NUM_STEPS] [--batch-size BATCH_SIZE] [--log-every LOG_EVERY] __main__.py: error: unrecognized arguments: -f B:\Users\God Messi\AppData\Roaming\jupyter\runtime\kernel-4fdcf797-1159-45e1-a02f-80e5bc830c39.json An exception has occurred, use %tb to see the full traceback. SystemExit: 2 b:\python35\lib\site-packages\IPython\core\interactiveshell.py:2889: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1) |
问题分析
由于在jupyter notebook中,args不为空
可以查看parse_args()函数源码
以及和其调用的函数parse_known_args()源码
虽然args默认参数为None,但是实质为args = _sys.argv[1:]
所以在jupyter中,可以查看自己需要的系统环境变量,然后以list的数据形式传参给args则可以了
问题解决
1 2 3 4 |
parser = argparse.ArgumentParser() parser.add_argument("--a", help="test") args = parser.parse_args(<span style="color: #ff0000;">args=[]</span>) print(args) |
参考文档
https://docs.python.org/2/howto/argparse.html#introducing-optional-arguments