Python .txt файл итерации и readlines () - PullRequest
0 голосов
/ 01 мая 2018

Я немного застрял, читая файл построчно, присваивая его переменной и применяя остальную часть моего кода к этой переменной. Мой код делает именно то, что ему нужно, я просто перебираю файл. Я получаю сообщение об ошибке «Смешивание итераций и методов чтения приведет к потере данных» при попытке:

for line in file:
    user_input = file.readlines()

и таким образом я могу получить только последнюю строку для чтения:

for line in user:
    user_input = line

Так, как я хочу читать каждую строку в файле? Я чувствую, что это будет повторяющийся вопрос, но я просто не знаю, как это сделать.

1 Ответ

0 голосов
/ 01 мая 2018

Если вы хотите перебирать строки по одной, вы делаете это:

for line in file:
    do_something_with(line)

Ваша вторая версия не работает, потому что все, что вы делаете, это переназначаете локальную переменную user_input на каждую строку снова и снова, так что в конце у вас просто есть последняя.

Вам нужно на самом деле сделать что-то со строкой, прямо в цикле. Означает ли это, что вы пытаетесь сделать это, обрабатывать его и записывать какие-то выходные данные, или добавлять его в список, или в файл, или в какую-то другую коллекцию для дальнейшего использования.

Например, если вы строите набор всех слов в файле, вы можете сделать это:

words = set()
for line in file:
    words |= set(line.split())

Если вы хотите прочитать весь файл сразу, чтобы получить список всех строк, с другой стороны, вы делаете это:

lines = file.readline()

… или это:

lines = list(file)

Если вам нужно циклически повторять строки или обращаться к ним в произвольном порядке, это может быть очень полезно.

Если нет, то что бы вы ни хотели сделать с lines, вы, вероятно, могли бы просто сделать вместо этого file, так что вы тратите время и память на построение этого списка.


Ваш код смешивает два:

for line in file:
    user_input = file.readline()

Другими словами, для каждой строки в файле вы пытаетесь прочитать весь файл. Это не имеет никакого смысла. Либо сделайте что-нибудь с каждой строкой, либо прочитайте весь файл только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...