Обработка ошибок исключений в Python выдает ошибку после указания не - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь, чтобы этот код не выдавал мне ошибку о файле, который я создал с именем beloved.txt. Я использовал FillNotFoundError: чтобы не выдавать ошибку, а распечатать файл, который не был найден, но вместо этого он печатал сообщение и сообщение об ошибке. Как я могу это исправить?

def count_words(Filenames):
    with open(Filenames) as fill_object:
        contentInFill = fill_object.read()

    words = contentInFill.rsplit()
    word_length = len(words)
    print("The file " + Filename + " has " + str(word_length) + " words.")

    try:
        Filenames = open("beloved.txt", mode="rb")
        data = Filenames.read()
        return data
    except FileNotFoundError as err:
        print("Cant find the file name")

Filenames = ["anna.txt", "gatsby.txt", "don_quixote.txt", "beloved.txt", "mockingbird.txt"]
for Filename in Filenames:
    count_words(Filename)

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Предложение "with open (Filenames) as fill_objec:" вызовет исключение.Таким образом, вы, по крайней мере, должны приложить это предложение в части try.В своем коде вы сначала получаете это слово словами, а затем проверяете конкретный файл beloved.txt.Этот удвоенный код позволяет вам дублировать mensajes.Предложение:

def count_words(Filenames):
    try:
        with open(Filenames) as fill_object:
            contentInFill = fill_object.read()
        words = contentInFill.rsplit()
        word_length = len(words)
        print("The file " + Filename + " has " + str(word_length) + " words.")
    except FileNotFoundError as err:
        print("Cant find the file name")
0 голосов
/ 08 марта 2019

Несколько советов:

  • Не используйте заглавные буквы, кроме имен class.
  • Используйте разные имена переменных при обращении к разным вещам.(т.е. не используйте Filenames = open("beloved.txt", mode="rb"), если у вас уже есть глобальная версия этой переменной, и локальная версия этой переменной, и , теперь вы переназначаете ее для обозначения чего-то другого снова !! Такое поведение приведет к головным болям ...

Основная проблема скрипта - попытка открыть файл вне оператора try. Вы можете простопереместите ваш код в пределах try:! Я также не понимаю except FileNotFoundError as err:, когда вы не используете err. Вы должны переписать это в except FileNotFoundError: в этом случае:)

def count_words(file):
    try:
        with open(file) as fill_object:
            contentInFill = fill_object.read()
        words = contentInFill.rsplit()
        word_length = len(words)
        print("The file " + file + " has " + str(word_length) + " words.")
        with open("beloved.txt", mode="rb") as other_file:
            data = other_file.read()
        return data
    except FileNotFoundError:
        print("Cant find the file name")

filenames = ["anna.txt", "gatsby.txt", "don_quixote.txt", "beloved.txt", "mockingbird.txt"]
for filename in filenames:
    count_words(filename)

Я также не понимаю, почему у вас есть функция return data, когда данные считываются из одного и того же файла, независимо от того, что file вы вводите в функцию ??Вы получите одинаковый результат во всех случаях ...

...