【问题标题】:Script that automatically provides input() in terminal在终端中自动提供 input() 的脚本
【发布时间】:2022-01-14 06:51:39
【问题描述】:

文件 A 旨在使流程自动化,并有一个调用文件 B 的 for 循环。

文件 B 有一个 input() 函数,当它被调用时,它会暂停 for 循环,直到提供用户输入。

有没有一种方法可以在不中断 for 循环的情况下自动填充用户输入? (注意:我无法更改文件 B 的任何内容,只能更改文件 A)

【问题讨论】:

    标签: python input terminal


    【解决方案1】:

    由于您无法更改文件 B,这是正确的方法,因此我给您 3 种不同的解决方法:

    1. 修补输入功能:

      import B
      B.input = lambda *args: "myinput"
      # Run function
      B.input = input
      
    2. 修补标准输入:

      import sys, io
      old_stdin = sys.stdin
      sys.stdin = io.StringIO("myinput")
      # Run function
      sys.stdin = old_stdin
      
      
    3. 使用subprocess.run() 运行文件 B。

    选项 3 是我最同意的选项,因为它最不老套。请记住,它是 3 中最慢的选项。其他选项有点脏,但如果您别无选择,也可以正常工作。

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多