【问题标题】:How do I pass arguments to a script piped to the Python interpreter on stdin?如何将参数传递给通过管道传输到标准输入上的 Python 解释器的脚本?
【发布时间】:2020-12-09 23:45:52
【问题描述】:

我正在使用get-poetry.py 脚本安装poetry,并且我想指定要安装的版本。要安装最新版本,我会这样做

GET_POETRY_URL=https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
curl -sSL $GET_POETRY_URL | python

get-poetry.py 脚本接受一个参数 --version,但我该如何传递呢?

curl -sSL $GET_POETRY_URL | python --version 1.1.4

打印已安装的 python 版本,而不是将参数传递给 get-poetry.py 脚​​本。我可以将脚本保存到一个文件中并以这种方式调用它,但我是在 docker 映像中执行此操作的,我不想在之后处理它。

【问题讨论】:

    标签: python pipe command-line-arguments


    【解决方案1】:
    curl -sSL $GET_POETRY_URL | python - --version 1.1.4
    

    在调用python 时使用- 作为脚本位置将导致它从标准输入读取。像往常一样,脚本位置之后的任何参数都会传递给脚本:

    $ echo "import sys; print(sys.argv)" | python - --version 1.1.4
    ['-', '--version', '1.1.4']
    

    使用 - 表示标准输入也适用于许多其他 unix 工具:

    $ echo hello | cat -
    hello
    

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2015-01-18
      • 2013-03-30
      相关资源
      最近更新 更多