Ошибка NoneType при открытии файла

Поэтому я пытался выяснить, почему он дает мне эту ошибку. Если я поставлю это:

def open_file():
    fp = open("ABC.txt")
    return fp

file = open_file()

count = 1

for line in file:
    if count == 9:
        line9 = line
    if count == 43:
        line43 = line
#blahblahblah more programming

Это работает, но это дает мне объект NoneType, который не повторяется:

def open_file():
    while True:
        file = input("Enter a file name: ")
        try:
            open(file)
            break
        except FileNotFoundError:
            print("Error. Please try again.")
            print()

file = open_file()

count = 1

for line in file:  #here is where I get the error
    if count == 9:
        line9 = line
    if count == 43:
        line43 = line

Я думаю, что это просто какая-то глупая ошибка, но я не могу ее найти. Спасибо за ваше время!


person Alex    schedule 12.10.2016    source источник
comment
Вы никогда не возвращаете что-либо явно (вы должны вернуть файл) в open_file, поэтому file равно None, таким образом, итерация по строкам скажет, что вы не можете выполнить итерацию по NoneType.   -  person Andrew Li    schedule 12.10.2016


Ответы (1)


В вашей функции open_file нет инструкции return, поэтому она возвращает None. Вы должны попробовать что-то вроде

def open_file():
    while True:
        file = input("Enter a file name: ")
        try:
            return open(file)
        except FileNotFoundError:
            print("Error. Please try again.")
            print()
person Curtis Lusmore    schedule 12.10.2016