簡體   English   中英

python腳本的采購輸出失敗,管道異常

[英]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

什么都不給我

也許可以使用evalexport將變量從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.

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