在作为 Heredoc 传递的 Python 脚本中使用管道内容

在作为 Heredoc 传递的 Python 脚本中使用管道内容

我知道here-doc转到标准输入。我看到here-doc优先于来自管道的内容之前进入标准输入(见下文)。

但也许有一个技巧可以让它发挥作用?

总而言之,我想避免创建脚本文件。我知道-cpython 中有 switch,但也不想将所有内容都放在一行中。

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

你不能有两个标准输入——Python 如何知道代码在哪里停止以及内容在哪里开始?

这是使用的解决方法流程替代:

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

相关内容