在ipython notebook中使用argparse方式

FC Porto Fan Token中文网

  • 首页
  • Gym Network中文网
  • 栏目分类
    Gym Network中文网
    Gym Network中文网
    你的位置:FC Porto Fan Token中文网 > Gym Network中文网 > 在ipython notebook中使用argparse方式
    在ipython notebook中使用argparse方式
    发布日期:2025-01-04 10:44    点击次数:79
    ipython notebook经常被我用作debug的工具。今天调试一段代码,里面用到了argparse这个包来解析命令行参数。但是在ipython notebook里,命令行参数与实际执行的时候是完全不同的,因此代码没办法直接跑起来。 首先查看parse_args()函数的文档,发现函数接口长这样:ArgumentParser.parse_args(args=None, namespace=None)。这个args要求什么类型并没有说,不过文档最后有一句:“默认情况下,参数字符串取自于sys.argv,并创建一个空的Namespace对象用于保存属性”。那就好办了,只要args长得跟sys.argv一样就行。 如果在ipython notebook里,sys.argv可能是这样的: ['/home/user/venv/lib/python2.7/site-packages/ipykernel/__main__.py','-f','/run/user/1000/jupyter/kernel-7b35f85c-27c9-44db-bcf7-e46edb18ee81.json'] 这是一个字符串组成的列表,每个字符串显然来源于命令行参数,用空格分开。那么我们只要稍微改动一下代码,给parse_args()输入一个列表即可。假设运行时的命令行参数是python train.py --gpus 0 --lr 0.1,那么传入的列表就是['--gpus', '0', '--lr', '0.1'] 补充知识:jupyter notebook:使用argparse包存在的问题及解决 argparse模块 argparse是python用于解析命令行参数和选项的标准模块 导入argparse包 import argparse 遇到的问题 parser = argparse.ArgumentParser() parser.parse_args() usage: __main__.py [-h] __main__.py: error: unrecognized arguments: -f /run/user/1006/jupyter/kernel-ce6cfb61-acb9-40bf-a59b-ff6e1c1eacae.json An exception has occurred, use %tb to see the full traceback. SystemExit: 2 问题分析 由于在jupyter notebook中,args不为空,可以查看系统环境变量,大概是下面形式 import sys sys.argv ['/home/liu/anaconda2/lib/python2.7/site-packages/ipykernel/__main__.py', '-f', '/run/user/1006/jupyter/kernel-ce6cfb61-acb9-40bf-a59b-ff6e1c1eacae.json'] 可以看出,错误中的-f /…来自这里,可以查看parse_args()函数源码 以及和其调用的函数parse_known_args()源码 虽然args默认参数为None,但是实质为args = _sys.argv[1:] 所以在jupyter中,可以查看自己需要的系统环境变量,然后以list的数据形式传参给args则可以了 parser.parse_args?? parser.parse_known_args?? 问题解决 Namespace(verbosity=None) argparse参考文档 以上这篇在ipython notebook中使用argparse方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    上一篇:不可错过的四款非模组化电源推荐,让你的电脑更加稳定高效!
    下一篇:让美国成为比特币超级大国,特朗普为何态度大变