簡體   English   中英

如何將os.execlpe()的stdout stderr重定向到文件中

[英]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抱怨無法將它們作為文件找到的原因。

您可以將subprocessshell=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM