2016-04-02 2 views
-1

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

def main(): 
# Declare variables 
line = '' 
counter = 0 

# Prompt for file name 
fileName = input('Enter the name of the file: ') 

# Open the specified file for reading 
infile = open(fileName, 'r') 

# Priming read 
line = infile.readline() 
counter = 1 

# Read in and display first five lines 
while line != '' and counter <= 5: 
# Strip '\n' 
    line = line.rstrip('\n') 
    print(line) 
    line = infile.readline() 
    # Update counter when line is read 
    counter +=1 

# Close file 
    infile.close() 

# Call the main function. 
main() 
+3

Вы закрыли 'infile' в цикле' while'. – vaultah

+1

Возможно, вы захотите заглянуть в синтаксис 'with open() as ...' для чтения файлов –

+0

Добавить 'print ('закрывающий файл')' прямо перед закрытием ... вы увидите его дважды. – tdelaney

ответ

3

В Python отступы является частью синтаксиса - это означает кодовых блоков.

Ваш фрагмент кода ясно показывает, что операция infile.close()внутри петля, поэтому она выполняется на первой итерации. Следовательно, второе чтение из файла не выполняется, потому что файл уже был закрыт в предыдущей итерации.

Простой сток линии infile.close() для исправления.

В качестве альтернативы, используйте контекстные менеджеры, чтобы позволить очистке ресурсов Python.

with open(fileName, 'r') as infile: 
    pass # operate on file here 

# file will be closed automatically when you leave code block above. 
Смежные вопросы