[英]Sourcing output of python script fails with broken pipe exception
我試圖讓 python 腳本的輸出是可獲取的。 即我希望能夠運行:
$ source <(python example.py)
它總是因相同的問題而失敗:
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
這是example.py:
print("export ENV_VAR=abc")
有沒有辦法解決? 我試圖嘗試捕獲異常(BrokenPipeError),但它似乎不起作用。 異常似乎阻止采購工作,因為
$ echo $ENV_VAR
什么都不給我
也許可以使用eval
或export
將變量從Python
腳本獲取到當前的Bash
環境中:
export $( python example.py )
echo $ENV_VAR
...要么...
eval $( python example.py )
echo $ENV_VAR
盡管兩者都應輸出“ abc”,但也許有更好的方法來處理此問題。
您可以在 python 腳本中修復它,或者將 python 腳本的輸出發送到一個程序,該程序在其標准輸出關閉時不會出現異常。
source <(python example.py | tee -p /dev/null)
旁注:我無法獲得重現所描述錯誤的source
,但我能夠使用echo
重現問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.