比较输入与某行文本文件

时间:2017-10-15 20:13:21

标签: python

我试图编写一个程序的一部分,该程序将输入与名为name的文本文件的第五行进行比较。该文件在每一行都有文本,并且当前代码只有在文件中只有一行文本(第5行之前的空白行)时才有效,但是当文件有30行文本时我需要它才能工作。 文本文件如下所示:

John
James
Bob
Jim
Jack
Harry
Oliver

需要更改为我的代码:

 names = input("enter name: ")
   with open("name") as f:
       for line in f:
           if line[4].split('\n') == names:
               print ("correct")
       else:
           print("incorrect")

2 个答案:

答案 0 :(得分:0)

name = input("enter name: ")
with open("name") as f:
    lines = f.readlines()
    if lines[4] == name:
        print("correct")
    else:
        print("incorrect")

你的代码应该是这样的;您当前代码的问题在于您认为line指的是所有行,而它只指当前的连续行 - 您使用[4]执行的操作是选择该行的第5个字符与第5行相对。

答案 1 :(得分:0)

names = ['John',
   ...: 'James',
   ...: 'Bob',
   ...: 'Jim',
   ...: 'Jack',
   ...: 'Harry',
   ...: 'Oliver']

with open('filename.txt') as f:
    for idx, line in enumerate(f):
        if idx == 4:
            break

print('Correct' if line.rstrip() == input('Name: ') else 'Incorrect')

令人惊讶的是,将打开文件视为标准可迭代文件并通过lines将行读入readline()之间没有明显的性能差异,即使对于具有100,000个名称的文件也是如此。