所以我有一个文本文件,应该在整个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]