2015-05-14 3 views
1

У меня возникли проблемы написания кода для этой программы:Создание Python перечитать файл в то время как программа работает

#opening a file 

addressbook = open("h:/A453/Address Book/AddressBook1.txt","r+") 

line = addressbook.readline() 

searchdata = input("Please enter the surname you are looking for ") 

if searchdata in line: 
    print(line) 

Все вышеперечисленные работы, но он только читает нижнюю строку текста в файле, когда я бегу Это. Я исследовал это в Интернете, но не нашел ничего полезного или понятного. Любая помощь будет оценена по достоинству. Благодарю.

+1

'addressbook.seek (0)' снова помещает курсор в начало. Вы также можете сделать 'addressbook.seek (addressbook.tell() - len (line))', чтобы искать одну строку назад, откуда вы сейчас. Но я не уверен, что вы здесь задаете, вы хотите снова прочитать весь файл? и почему? Вы уже сохранили фактическую строку, которую вы сравниваете, в переменной 'line'? – Torxed

+0

Вы читаете только одну строку из файла. Если есть несколько строк, вам нужно использовать readlines() или читать их последовательно в цикле и искать в каждой строке отдельно. – smichak

ответ

0

Проблема заключается в том, что вы используете .readline(), который читает только одну строку из файла, чтобы прочитать весь файл у вас есть 2 варианта: .read() или .readlines()

.read() метод Он считывает содержимое файла за один раз и возвращает строку со всеми escape-символами и пробелами.

.readlines() Он считывает файл и возвращает список содержимого файла, элементы которого является split() в каждой новой строке.

#opening a file 

addressbook = open("h:/A453/Address Book/AddressBook1.txt","r+") 

line = addressbook.read() 

searchdata = input("Please enter the surname you are looking for ") 

if searchdata in line: 
    print(line) 
+0

Если я поместил в Vickers, который включен в мои фамилии в моем файле, он выводит все, только что разделенные. Как я могу просто детализировать данные Виккерса, а не другие? –

Смежные вопросы