【发布时间】:2015-03-04 21:41:34
【问题描述】:
我正在尝试定义一个函数,该函数应该使用给定名称打开文件,在屏幕上显示其内容,一次三个字符,然后关闭文件。如果使用无效的文件名调用此版本函数,它应该会崩溃。但是,我认为我的代码中存在一个错误,导致它在没有运行该函数的情况下崩溃。
这是我目前的代码:
def trigram_printer(filename):
"""str -> none"""
print("Please enter a filename: ")
filename = input("> ")
while True:
try:
file = open(filename)
for line in file:
print(line)
file.close()
break
except IOError:
print("There was a problem accessing file '" + filename + "'." + \
"Please enter a different filename.")
filename = input(">")
对于错误消息,我实际上得到了“访问文件'时出现问题”+文件名+“'”。 + \ “请输入一个不同的文件名。”......所以我认为它可能至少有一点作用。如果可以,请帮助我...
【问题讨论】:
-
缩进,你需要在函数的范围内格式化你的代码。
-
好吧,如果您遇到 IOError,请查看堆栈跟踪并查看原始错误是什么。或者,如果它没有出现,则引发异常而不是捕获它。
-
为什么要将参数文件名传递给函数,然后将输入输入到文件名变量。您可能正在覆盖它。
-
except IOError as e: print(e)将提供更多信息,因为 ThePavolC 已评论传递您从未使用过的 arg 是多余的,如果您想使用您传入的文件名,请删除第一个输入 -
这个函数到底应该做什么?你想让用户输入文件名,然后你想打印出文件的内容,然后从函数返回?
标签: python python-3.x