[英]How to redirect stdout stderr of os.execlpe() into a file
我撞到了牆上,按照以下方式從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
有人知道如何解決這個問題嗎?
外殼1>log.out
會解釋重定向2>&1
ad 1>log.out
,但是您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()
並刪除重定向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.