我正撞在墙上,按照以下方式从python运行jpyter nbconvert
,因为它允许我将参数传递给jupyter笔记本:
env['IPYTHONARGV'] = json.dumps({'timeperiod':timeperiod,'infile':infile})
os.execlpe('jupyter', 'jupyter', 'nbconvert', '--execute','notebook.ipynb',
'--to', 'html', '--output', output_html, '2>&1', '1>log.out', env)
在省略'2>&1', '1>log.out',
部分时,该命令可以正常工作。但是使用bash重定向时,该命令将抱怨以下内容:
[NbConvertApp] WARNING | pattern '2>&1' matched no files
[NbConvertApp] WARNING | pattern '1>log.out' matched no files
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
shell解释了重定向2>&1
和1>log.out
,但是您正在将它们作为参数提供给命令。这就是为什么Jupyter抱怨无法将它们作为文件找到。
您可以将subprocess
与shell=True
一起使用:
import subprocess as sp
env['IPYTHONARGV'] = json.dumps({'timeperiod':timeperiod,'infile':infile})
sp.check_call('jupyter nbconvert --execute notebook.ipynb --to html --output output_html 2>&1 1>log.out', shell=True, env=env)
如果您需要使用Python处理输出,则可以使用sp.check_output()
并删除重定向。