I have this simple Python script which I run from my Jupyter Notebook. However the arguments I pass to it seemingly are ignored and this results in an exception:
two_digits.py
import sys
input = sys.stdin.read()
tokens = input.split()
a = int(tokens[0])
b = int(tokens[1])
print(a + b)
%run two_digits 3 5
ndexError Traceback (most recent call last)
D:\Mint_ns\two_digits.py in ()
5 tokens = input.split()
6
----> 7 a = int(tokens[0])
8
9 b = int(tokens[1])
IndexError: list index out of range
解决方案
You need to use sys.argv instead of sys.stdin.read():
two_digits.py
import sys
args = 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