Предположим, у меня есть программа, которая использует .txt-файл для хранения данных, которые ему нужны для работы. Поскольку в текстовом файле очень много данных (просто с ним), я должен был использовать генератор, а не итератор, чтобы просматривать данные в нем, чтобы моя программа оставляла как можно больше места. Давайте просто скажем (я знаю, что это не безопасно), что это список имен пользователей. Таким образом, мой код будет выглядеть так (используя python 3.3).Получение количества строк в текстовом файле без ссылок на чтение
for x in range LenOfFile:
id = file.readlines(x)
if username == id:
validusername = True
#ask for a password
if validusername == True and validpassword == True:
pass
else:
print("Invalid Username")
Предположим, что для действующего пароля установлено значение Истина или False, где я запрашиваю пароль. Мой вопрос в том, что, поскольку я не хочу использовать всю оперативную память, я не хочу использовать readlines(), чтобы получить все это, и с кодом здесь я беру только очень небольшое количество ОЗУ при любом заданном время. Тем не менее, я не уверен, как получить количество строк в файле (предположим, что я не могу найти количество строк и добавлять к ним по мере поступления новых пользователей). Есть ли способ, которым Python может это сделать, не читая весь файл и не сохраняя его сразу? Я уже пробовал len()
, который, по-видимому, не работает с текстовыми файлами, но стоит попробовать. Один из способов, который я думал сделать для этого, не слишком велик, он включает в себя простое чтение строк по одной строке за раз в таком большом текстовом файле, а затем продолжающееся, когда я получаю сообщение об ошибке. Я бы предпочел не использовать этот способ, поэтому любые предложения будут оценены.
Я согласен, что это правильный путь, чтобы решить эту проблему, но вы знаете что-нибудь, что может позвольте мне получить длину файла? Это скорее гипотетическая ситуация, чем та, с которой я столкнулся или столкнулся. – KnightOfNi
@ user2945577 Обновлен мой ответ :) – poke
Ooops, __id__ зарезервировано python word – volcano