Как зациклить и показать сообщение об ошибке, пока входной файл не может быть открыт - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно определить функцию с именем open_file(prompt_str). Эта функция получает строку, которая является сообщением для отображения при запросе пользователя на ввод имени файла. Программа попытается открыть файл. Если файл не может быть открыт, должно появиться сообщение об ошибке. Эта функция будет зацикливаться до тех пор, пока не получит надлежащий ввод и успешно не откроет файл. Он возвращает указатель файла.

fp = open(filename, "r ")

Для этого домашнего задания мне дали уже определенную переменную Option.

Код:

OPTION = "\nMenu\
\n\t1: Display data by year\
\n\t2: Display data by country\
\n\t3: Display country codes\
\n\t4: Stop the Program\
\n\n\tEnter option number: "
"Enter the filename to read: "
"File not found! Try Again!"
"Enter year: "
"Year needs to be between 2009 and 2017. Try Again!"
"Do you want to plot (yes/no)? "
"Enter country code: "
"Country code is not found! Try Again!"
"\nCountry Code Reference"
"Invalid option. Try Again!"
"\nThanks for using this program!"

import matplotlib.pyplot as plt
import csv
from operator import itemgetter

MIN_YEAR = 2009
MAX_YEAR = 2017

def open_file(prompt_str):
    '''
        WRITE DOCSTRING HERE!!!
    '''
    filename = input(Option)
    #Do i use a if statment or try except to check whether file is able to be opened 
    fp = open(filename, "r ", encoding = "utf-8 ")

    pass 

1 Ответ

1 голос
/ 25 октября 2019

Эта функция получает строку, которая является сообщением для отображения при запросе пользователю ввести имя файла

Это то, что вы хотите передать на ввод, а не OPTION. Примечание: Option не определено в вашем коде

Эта функция будет зацикливаться до тех пор, пока не получит правильный ввод и успешно не откроет файл

Вы пропустили цикл

Возвращает указатель файла

Вам необходимо заменить проход на выражение возврата


Например

def open_file(prompt_str):
    while True:
        filename = input(prompt_str)
        try:
            return open(filename)
        except IOError:
            print(filename + " doesn't exist")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...