在Jupyter Notebook中,运行Python源代码非常方便,但是如何模拟命令行方式运行时的输入参数呢?
如果直接使用sys.argv会出现错误。例如使用argv[1]时出现:
导致上述错误的原因为:在Jupyter Notebook中运行Python代码时,argv中有三个默认参数,分别是:
argv[0]: ‘路径\test.py’ (源代码文件名)
argv[1]: ‘-f’
argv[2]: ‘路径\kernel-…json’
而在命令行方式下运行Python代码时,argv[0]与上述argv[0]相同,但argv[1]为命令行中紧随在test.py之后的字符串,例如,在如下命令行中:
python test.py test.txt
argv[1]为 test.txt
因此,解决方案就是对 list argv 进行修改,如下面的代码所示:
#需要sys模块来使用argv
from sys import argv
#查看当前的argv列表
print(len(argv))
print(argv)
#直接修改argv
argv[1] = 'test.txt'
#也可以添加新的参数
argv.append('test.txt')
这样,在后续代码中, .py 和 .ipynb源代码一致,无需为在Jupyter Notebook中运行而进行修改。