Python-读取终端输出并从脚本本身提供输入

时间:2019-11-12 23:34:08

标签: python python-3.x subprocess stdout stdin

我正在使用模块中的类,该类在首次使用时会要求我在终端中进行一些输入。

在每个新实例上,终端都会要求一些输入。

示例:

instance = Class()
instance.run()
## asks for input in the terminal

我考虑了子流程模块,但未发现有关用例的任何信息,最好的解决方案应该允许我阅读所要求的内容并在每个步骤中输入一些数据。

预先感谢

2 个答案:

答案 0 :(得分:0)

这是a fun guide I found on google just now中的一个例子。

我建议您搜索有关此主题的一些不同文章,以了解在特定情况下可能对您有帮助的不同方法。编码愉快!

from __future__ import print_function, unicode_literals
from PyInquirer import prompt
from pprint import pprint
questions = [
    {
        'type': 'input',
        'name': 'first_name',
        'message': 'What\'s your first name',
     }
]
answers = prompt(questions)
pprint(answers)
)

答案 1 :(得分:0)

您的问题实际上在这里得到了很好的回答: Write function result to stdin

我在下面提供了一个选项,但是总的来说,这是一个非常混乱的情况,我会寻找替代解决方案。甚至猴子修补其他库以接受输入作为变量也可能更干净。

话虽这么说,翻译为您的目的可能是这样的:

import sys
import StringIO

class Foo(object):
    def run(self):
        self.x = raw_input('Enter x: ')

old_stdin = sys.stdin
instance = Foo()
sys.stdin = StringIO.StringIO('asdlkj')
instance.run()
print
print 'Got: %s' % instance.x

并运行:

Enter x: 
Got: asdlkj