如何从 Python 中的文本文件中提取用户输入



所以我有一个文本文件,应该在整个Python脚本中用作用户输入。假设我的文本文件如下所示:

input1
input2
input3
input4

然后我有一个看起来像这样的 while 循环:

mainFlag = True
while mainFlag == True:
    userInput = input("Choose one of the 4 inputs")
    if userInput == 'input1':
        function1()
    elif userInput == 'input2':
        function2()
    elif userInput == 'input3':
        function3()
    elif userInput == 'input4':
        function4()

如何遍历输入文本文件,将每一行作为字符串,并将该字符串用作 while 循环中的用户输入?

谢谢

在问这个问题之前,你应该环顾四周。你只需要使用 readline() .Python:循环读取所有文本文件行

我建议改用fileinput模块(https://docs.python.org/2/library/fileinput.html),但值得一提的是,您可以将输入管道传输到期望从用户读取的程序,例如:

bash-3.2$ cat prog.py 
#!/usr/bin/env python
while True:
    try:
        x = raw_input()
    except EOFError:
        break
    if x == "a":
        print 'got a'
    elif x == 'b':
        print 'such b'
    else:
        print 'meh %r' % x
bash-3.2$ cat vals.txt 
a
b
c
bash-3.2$ # equivalent to: cat vals.txt | ./prog.py
bash-3.2$ ./prog.py < vals.txt
got a
such b
meh 'c'

您正在寻找的东西听起来像是经典的发电机解决方案(阅读 pep 255 了解更多信息):

def function1():
    print("function1")
def function2():
    print("function2")
def function3():
    print("function3")
def choose_input(the_input):
    return {
        'input1': function1,
        'input2': function2,
        'input3': function3
    }[the_input]

with open("file.txt") as file:
    inputs = (choose_input(i.rstrip("n")) for i in file.readlines())
[my_input_function_call() for my_input_function_call in inputs]

相关内容

  • 没有找到相关文章

最新更新