1. 程式人生 > 其它 >jupyter如何解析命令列引數argv

jupyter如何解析命令列引數argv

  參考資料:

  https://stackoverflow.com/questions/37534440/passing-command-line-arguments-to-argv-in-jupyter-ipython-notebook

  這個問題一直困擾了我很久,眾所周知jupyter notebook非常利於除錯--單步執行,隨時Debug。但是受限於ipynb的執行效率,網上大多數的專案使用的都是.py指令碼,並且非常貼心地給我們使用各種argparse配置好命令列引數,如下所示:

  但是問題來了,jupyter notebook在執行時有沒有找我們要這些引數?顯然沒有,此時如果我們呼叫argparse的parse函式,就會不意外地報錯,大概長下面這樣:

  這下麻煩了,ipynb沒辦法正常解析命令列引數了。望著config檔案裡面作者設定好的數十行變數或路徑,實在不想放棄啊,但是又不想放棄jupyer notebook方便的除錯功能,於是在網上搜索了半天,終於發現瞭解決辦法。辦法其實也很簡單,就是顯式地使用python的sys包來配置好命令列引數:

  噹噹噹當,完全沒有報錯。因此,使用配置sys.argv的方法完全可以實現解析命令列引數的效果,這樣就可以完美複用作者寫好的配置,不用操心自己弄配置了!需要注意的是argv的第一項是指令碼檔名,不能預設,否則parser會遺漏配置的。