如何在 jupyter notebook 上使用解析参数调用 python 脚本
How to call a python script with parsing arguments on jupyter notebook
我有一个我定义的 python 脚本:
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--task', type=str)
parser.add_argument('--scale', type=int)
args = parser.parse_args()
... # Do things with my arguments
if __name__ == '__main__':
main()
我在命令行上调用这个脚本来做:
python myscript.py --task mytask --scale 1
我想在 jupyter notebook 中调用这个脚本。有没有办法解析参数而不修改我的脚本?即,做一些看起来像这样的事情:
import myscript
myscript.main(--task=mytask,scale=1)
P.S.: 我尝试使用诸如 %run
之类的魔法线(这可能也适用于我的情况)但是我在收集脚本的 returns 时遇到了问题。
您可以将 args
传递给 parser.parse_args
:
# myscript.py
import argparse
def main(args=None):
parser = argparse.ArgumentParser()
parser.add_argument('--task', type=str)
parser.add_argument('--scale', type=int)
args = parser.parse_args(args=args)
print("task is: ", args.task)
print("scale is: ", args.scale)
if __name__ == "__main__":
main()
cli 的输出:
python3 myscript.py --task aaa --scale 10
# task is: aaa
# scale is: 10
来自 python
的输出
import myscript
myscript.main("--task aaa --scale 10".split())
# task is: aaa
# scale is: 10
我有一个我定义的 python 脚本:
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--task', type=str)
parser.add_argument('--scale', type=int)
args = parser.parse_args()
... # Do things with my arguments
if __name__ == '__main__':
main()
我在命令行上调用这个脚本来做:
python myscript.py --task mytask --scale 1
我想在 jupyter notebook 中调用这个脚本。有没有办法解析参数而不修改我的脚本?即,做一些看起来像这样的事情:
import myscript
myscript.main(--task=mytask,scale=1)
P.S.: 我尝试使用诸如 %run
之类的魔法线(这可能也适用于我的情况)但是我在收集脚本的 returns 时遇到了问题。
您可以将 args
传递给 parser.parse_args
:
# myscript.py
import argparse
def main(args=None):
parser = argparse.ArgumentParser()
parser.add_argument('--task', type=str)
parser.add_argument('--scale', type=int)
args = parser.parse_args(args=args)
print("task is: ", args.task)
print("scale is: ", args.scale)
if __name__ == "__main__":
main()
cli 的输出:
python3 myscript.py --task aaa --scale 10
# task is: aaa
# scale is: 10
来自 python
的输出import myscript
myscript.main("--task aaa --scale 10".split())
# task is: aaa
# scale is: 10