开发者社区> 问答> 正文

如何在bash脚本中使用Python的input()函数?

我正在尝试将Python脚本集成到bash脚本中。但是,当我使用该input()功能时,我得到了一个EOFError。我该如何解决这个问题?

python3 <<END print(input(">>> ")) END

展开
收起
游客6qcs5bpxssri2 2019-09-07 21:10:04 1613 0
2 条回答
写回答
取消 提交回答
  • 使用argspare包,进行输入参数.

    image.png

    使用时命令行xxxx.py -c 10

    2019-11-18 11:09:39
    赞同 展开评论 打赏
  • 您无法通过程序的标准输入同时提供脚本和用户输入。(这实际上就是你要做的。<<重定向标准输入。)

    理想情况下,您将脚本作为命令行参数而不是stdin使用-c SCRIPT而不是<<EOF heredoc EOF:

    #!/bin/bash

    python3 -c 'print(input(">>> "))' 请注意,如果您有一个带有嵌套引号的更复杂的Python脚本,您可能需要注意引用和转义。

    如果需要,您仍然可以让脚本在多行上运行:

    #!/bin/bash

    python3 -c ' import os.path

    path_name = input("enter a path name >>> ")

    file_exists = os.path.exists(path_name)

    print("file " + path_name + " " + ("exists" if file_exists else "does not exist")) ' 请注意,当您想在Python脚本中使用单引号时会遇到麻烦,就像您想要打印doesn't而不是does not。

    您可以使用多种方法解决这个问题。我认为最灵活的一个(除了让你引用地狱之外)是用双引号代替Python脚本,并正确地转义所有内部双引号和shell解释的其他字符:

    #!/bin/bash

    python3 -c " print("It doesn't slice your bread.") print('But it can', 'unsliced'[2:7], 'your strings.') print("It's only about $0. Neat, right?") " 请注意,我也转义了$,因为shell会在周围的双引号内解释它,结果可能不是你想要的。

    2019-09-07 21:11:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载