Running a Python script in Jupyter Notebook, with arguments passing Running a Python script in Jupyter Notebook, with arguments passing python-3.x python-3.x

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