我试图阻止这个代码给我一个关于我创建的文件的错误,名为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)
一些提示:
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
?在所有情况下,您将获得相同的结果...
“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")