Как найти конец файла при помещении строк в несколько переменных (т.е. не использовать для строки в f) - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу прочитать 4 строки из файла и поместить каждую строку в отдельную переменную. Из того, что я могу сказать, я не могу использовать:

for file in f

, поскольку это занимает всего 1 строку за раз, и мне нужно поместить 4 строки в 4 отдельных переменных

мое текущее "решение" выглядит так:

while f.readline != None:
            tempName = f.readline()
            print(tempName)
            tempColour = f.readline()
            tempAge = f.readline()
            tempWeight = f.readline()
            # this try is taking the varables and making an object
            try:
                tempSheep = Sheep(tempName, tempColour, int(tempAge), int(tempWeight))
            except:
                print("your file is in an improper format")
                break
            else:
                sheepList.append(tempSheep)

Из того, что я могу сказать, проблема заключается в размещении переменных в объекте. Программа работает нормально, затем она почему-то проходит через дополнительное время, и в этом случае переменные не заполняются должным образом совместимыми типами данных, и класс выдает ошибку.

В конечном счете, я предполагаю, что мой вопрос: как мне правильно сделать выход из цикла?

Он запускается за концом файла, делает переменные равными none, а затем выдает ошибку, когда я создаю объект.

Извините, если этот пост грязный, это мой первый пост о переполнении стека.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Подобно тому, что заметил blhsing, вы можете написать свой код так:

with open('some_file', 'r') as f:
  tempName = f.readline()
  tempColour = f.readline()
  tempAge = f.readline()
  tempWeight = f.readline()
  # if you want everything else from the file you can do this:
  # rest = f.read()
  # or if you want to continue parsing data line by line, you can do this:
  # for line in f:
  #   process_line(line)

Затем вы можете обрабатывать переменные в обычном режиме. Если вас беспокоит неправильный формат файла, вы можете заключить его в блок try / исключением

0 голосов
/ 01 апреля 2019

Вы можете распаковать файловый объект как итеративный в 4 переменные, переназначая файловую переменную с остальными строками для дальнейшей распаковки:

with open('input_file') as f:
    lines = f
    while lines:
        try:
            name, colour, age, weight, *lines = lines
            sheepList.append(Sheep(name, colour, int(age), int(weight)))
        except Exception:
            print("your file is in an improper format")
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...