问题:
我有查找文件并打开它的代码。默认情况下,它会查找以 #######
开头的文件(每个 # 都是一个数字)。
问题是有时文件名是 ##-#####
而其他时候是 #####
。
如果找不到文件,我想要一种方法,尝试寻找可以写入文件的其他两种方式。
找不到文件时会发生 IOError 异常。我在想的是有一个 except 声明:
except File2:
Look for ##### in myfindFileFunction()
if file is still not found run except File3
except File3:
Look for ##-#### in myfindFileFuction()
except:
print "File not found"
我不确定的是如何设置自定义异常以这种方式工作,和/或是否有更 pythonic 的方式完全做到这一点......
设置一个模式或三个可能的文件名并反复思考直到找到文件会更好吗?
最佳答案
使用 try/except 确实是一种非常 pythonic(且快速)的做事方式。
您不仅要权衡它是否是 pythonic,还要权衡这种方法在可读性方面的影响。 6个月后再看代码,你还会很快看懂吗?其他人会吗?
我通常会确保处理此类事情的稍微复杂的 try/except 子句得到很好的注释。除此之外……这是一种完全合理的方式。
此外,为了让您对性能放心,这是在两种方法之间做出决定时的一个常见问题,请查看此处:Python if vs try-except你会发现 try/except 结构在 Python 中很快......真的很快。
关于Python:如果找不到文件,请尝试查找不同的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11654534/