use*_*077 4 python jupyter jupyter-notebook
我有一个从Jupyter Notebook运行的简单Python脚本。但是,我传递给它的参数似乎被忽略了,这导致异常:
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 <module>()
5 tokens = input.split()
6
----> 7 a = int(tokens[0])
8
9 b = int(tokens[1])
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
您需要使用sys.argv而不是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)
Run Code Online (Sandbox Code Playgroud)
命令行/ jupyter魔术行:
%run two_digits 3 5
Run Code Online (Sandbox Code Playgroud)
或,输出略有不同:
注意:这使用!前缀来指示jupyter的命令行
!ipython two_digits.py 2 3
Run Code Online (Sandbox Code Playgroud)
输出:(使用魔术行%run)
running two_digits.py ['two_digits.py', '2', '3']
2 3 5
Run Code Online (Sandbox Code Playgroud)
%%file calc.py
from sys import argv
script, a, b, sign = argv
if sign == '+':
print(int(a) + int(b))
elif sign == '-':
print(int(a) - int(b))
else:
print('I can only add and subtract')
Run Code Online (Sandbox Code Playgroud)
我们有几种选择:
%%!
python calc.py 7 3 +
Run Code Online (Sandbox Code Playgroud)
或者
%run calc.py 7 3 +
Run Code Online (Sandbox Code Playgroud)
或者
!python calc.py 7 3 +
Run Code Online (Sandbox Code Playgroud)
或使用输出中的路径
!ipython calc.py 7 3 +
Run Code Online (Sandbox Code Playgroud)
要访问输出,请使用第一种方式%%!. 输出是一个列表(IPython.utils.text.SList)
[In 1]
%%!
python calc.py 7 3 +
[Out 1]
['10']
Run Code Online (Sandbox Code Playgroud)
现在您可以使用下划线“_”
[In 2]
int(_[0])/2 # 10 / 2
[Out 2]
5.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10236 次 |
| 最近记录: |