Running a Python script in Jupyter Notebook, with arguments passing
You need to use sys.argv
instead of sys.stdin.read()
:
two_digits.py
import sysargs = sys.argv # a list of the arguments provided (str)print("running two_digits.py", args)a, b = int(args[1]), int(args[2])print(a, b, a + b)
command line / jupyter magic line:
%run two_digits 3 5
or, with a slightly different output:
Note: this uses a !
prefix to indicate command line to jupyter
!ipython two_digits.py 2 3
output: (using magic line %run)
running two_digits.py ['two_digits.py', '2', '3']2 3 5
%%file calc.pyfrom sys import argvscript, a, b, sign = argvif sign == '+': print(int(a) + int(b))elif sign == '-': print(int(a) - int(b))else: print('I can only add and subtract')
We have several options:
%%!python calc.py 7 3 +
or
%run calc.py 7 3 +
or
!python calc.py 7 3 +
or with the path in output
!ipython calc.py 7 3 +
To access the output use the first way with %%!
. Output is a list (IPython.utils.text.SList)
[In 1]%%!python calc.py 7 3 +[Out 1]['10']
Now you can use underscore '_'
[In 2]int(_[0])/2 # 10 / 2[Out 2]5.0