python中的异常错误处理在指定not to之后吐出错误

问题描述 投票:0回答:2

我试图阻止这个代码给我一个关于我创建的文件的错误,名为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)
python python-3.x python-2.7 error-handling filenotfoundexception
2个回答
0
投票

一些提示:

  • 除了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?在所有情况下,您将获得相同的结果...


0
投票

“with open(Filenames)as fill_objec:”句子会抛出异常。因此,您至少必须将该句子包含在try部分中。在您的代码中,您首先使用单词获取len,然后检查特定文件beloved.txt。这个加倍的代码可以让您进行重复的调查。建议:

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")
© www.soinside.com 2019 - 2024. All rights reserved.