Как я могу включить обработку ошибок имени файла в этот фрагмент кода?

#python #error-handling

#python #обработка ошибок

Вопрос:

Мне требуется включить некоторую форму обработки ошибок, когда пользователь вводит имя файла таким образом, чтобы, если они ввели имя файла, которого нет в каталоге programs, тогда оно появится с сообщением об ошибке. На данный момент это код:

 board = [] 
fileinput = input("Please enter your text file name:")        
filename = fileinput   ".txt"   
file = open(filename, "r ")
for lines in file:
    board.append(list(map(int,lines.split())))
  

Я не уверен, куда включить try / except, как если бы я включил его следующим образом:

 board = [] 
fileinput = input("Please enter your text file name:")        
filename = fileinput   ".txt"
try:
    file = open(filename, "r ")
    except:
        print("Error: File not found")
    for lines in file:
        board.append(list(map(int,lines.split())))
  

Затем я получаю следующую ошибку:

строка 28, для строк в файле: ошибка имени: имя ‘file’ не определено

Я знаю, что, вероятно, есть очень простое решение, но я никак не могу обдумать его.

Ответ №1:

Вы должны включить все строки, в которых может возникнуть ошибка под try , поэтому:

 board = [] 
fileinput = input("Please enter your text file name:")        
filename = fileinput   ".txt"
try:
    file = open(filename, "r ")
    for lines in file:
        board.append(list(map(int,lines.split())))
except:
    print("Error: File not found")
  

В представленном вами способе программа пытается игнорировать ошибку и переходит к следующему, который заканчивается NameError: name 'file' is not defined

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