我有这个功能:
def read_file(fname):
f = open(fname, 'r')
s = f.read()
return s
应该输入(要读取的文件的名称)并将其保存到名为portfolio的变量中。但是,如果我指定一个不存在的文件,我会得到一个IOError,而我似乎无法通过try / except来弄清楚如何处理它。
有什么想法吗?
答案 0 :(得分:2)
你不能停止它为你提供IOError
不存在的文件。如果可以,你怎么知道你必须做任何事情,比如要求另一个文件名?
你可以做的是以任何你想要的方式处理这个错误,比如要求另一个文件名。
例如:
while True:
fname = raw_input('Gimme a filename')
try:
contents = read_file(fname)
break
except IOError as e:
print('Sorry, {} gives me an error: {}'.format(fname, e))
现在,当你运行它时,它会继续询问文件名,直到你给它一个你可以阅读的文件名。如果你给它一个不存在的文件(或者你没有读取权限的文件,或者为了独占访问而被锁定的文件,或者存储在坏磁盘块上的文件,或者任何其他可能导致错误的文件),它会再次问你。
答案 1 :(得分:1)
为什么不这样做?
success = 0
while (success == 0):
try:
#get your input
read_file(fname)
success = 1
except(IOError):
success = 0 #totally unnecessary I guess, but whatever
自从我进行了真正的开发以来已经有一段时间了,所以这可能不是try / except在Python中实际工作的方式,但你明白了。