python直接运行ipynb文件(python kernel和matlab kernel)

 

python ipynb文件转换为python文件的命令行:

 

 

ipython nbconvert --to=python Untitled.ipynb

jupyter nbconvert --to script  Untitled.ipynb

linux命令行下直接运行ipynb文件:

由于nbconvert命令是在ipynb的同级目录生成py文件,并不运行该文件,所以需要两个命令才能运行ipynb文件并输出结果

关于多个命令执行的规则如下:

(1)不考虑前后命令在输入输出上的相关性,仅从逻辑上执行多个命令:

1. [ ; ]

如果被分号(;)所分隔的命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令。

2. [ && ]

如果命令被 && 所分隔,那么命令也会一直执行下去,但是中间有错误的命令存在就不会执行后面的命令,没错就直行至完为止。

3. [ || ]

如果每个命令被双竖线 || 所分隔,那么一遇到可以执行成功的命令就会停止执行后面的命令,而不管后面的命令是否正确与否。如果执行到错误的命令就是继续执行后一个命令,一直执行到遇到正确的命令为止。

(2)考虑前后命令输入输出的相关性,将前一个命令的结果作为后一个命令的参数:

 

 

 

 

 

1. 符号:` `
名称:反引号,上分隔符
位置:反引号(`)这个字符一般在键盘的左上角,数字1的左边,不要将其同单引号(’)混淆
作用:反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分

 

 

 

 

 

2. $() 
效果同` `

3. 命令:xargs
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。

 

1

2

 

 

管道与xargs的区别:

  • 管道是实现“将前面的标准输出作为后面的标准输入”
  • xargs是实现“将标准输入作为命令的参数”

4. find命令的-exec参数 xargs:通过缓冲方式并以前面命令行的输出作为参数,随后的命令调用该参数
若忽略 xargs 的 options 来看的话,
cm1 | xargs cm2
可以单纯看成: cm2 `cm1`
因此, find .... | xargs rm 也可作 rm `find ...` 来处理.
然而, 若 find 的结果太多, 可能会超过rm 可能接受的最大argument数量而失败.
xargs优点:由于是批处理的,所以执行效率比较高(通过缓冲方式)
xargs缺点:有可能由于参数数量过多(成千上万),导致后面的命令执行失败
若换成 find .... -exec   rm {} \; 的话, 
因为rm 是" 逐个 " item 去处理的, 则无此忧虑

 

实践:

现在我们既考虑前后命令的逻辑关系,同时考虑前后命令的输入输出关系,将ipynb文件通过命令行执行

在jupyter lab里面编写Untitled4.ipynb,内容的打印hello:

$(ipython nbconvert --to=python Untitled4.ipynb)&&find ./ -name "Untitled4.py"|xargs python

可以看到打印出来正确结果。也可以这样执行,不用$(),因为本来就会先执行前面一条命令:

ipython nbconvert --to=python Untitled4.ipynb&&find ./ -name "Untitled4.py"|xargs python

仔细分析命令执行过程:1,执行Untitled4.ipynb转换Untitled.py文件,该命令不会输出任何东西;2,执行find命令,查找当前目录下生成的Untitled.py文件,该命令会输出Untitled.py文件;3,通过xargs将2中输出的文件作为 python 命令的参数,相当于python Untitled4.py

或者:

ipython nbconvert --to=python Untitled4.ipynb&&python  ./Untitled4.py

同样可以给执行的python命令输入参数,以下是galaxy的tool_conf.xml文件命令部分:

 

,比如在juypter lab编写了Untitled.ipynb文件,打印x=3:

 

 

 

 

 

 

你可能感兴趣的:(Python)