Heredocに渡されたPythonスクリプトでパイプコンテンツを使用する

Heredocに渡されたPythonスクリプトでパイプコンテンツを使用する

私はここのドキュメントを知っています。標準入力に進みます。 here-docが標準入力へのパイプからのものよりも優先されることがわかります(下記参照)。

しかし、それを動作させる秘訣はありますか?

おおむねスクリプトファイルの生成を避けたい。私は-cPythonにスイッチがあることを知っていますが、すべてを1行に入れたくありません。

echo values | python3 <<SCRIPT
with open('/dev/stdin') as f:
    print(f.read()) # -> "values"
SCRIPT

現在の出力はスクリプト自体です。

with open('/dev/stdin') as f:
    print(f.read()) # -> "values"

ベストアンサー1

2 つの標準入力を持つことはできません。 Pythonはコードの終わりとその内容がどこで始まるかをどうやって知ることができますか?

これは以下を使用する回避策です。プロセスの交換:

echo values | python3 <(cat <<SCRIPT
with open('/dev/stdin') as f:
    print(f.read()) # -> "values"
SCRIPT
)

おすすめ記事