Python:如果找不到文件,请尝试查找不同的文件名

标签 python file

问题:

我有查找文件并打开它的代码。默认情况下,它会查找以 ####### 开头的文件(每个 # 都是一个数字)。

问题是有时文件名是 ##-##### 而其他时候是 #####

如果找不到文件,我想要一种方法,尝试寻找可以写入文件的其他两种方式。

找不到文件时会发生 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/

相关文章:

python - 使用python删除和修改一堆文件中的文本

java - 使用java读取制表符分隔文件的快速有效方法

python - 是否有函数调用可以替代此代码中的 for 循环?

C 文件顶部新行

Python:双重排序

python - 交叉熵对具有相同分布的向量产生不同的结果

java - 删除行后无法将 temp.txt 重命名为original.txt

java - 同时创建新文件

python - pandas read sql query 和 read sql table 的区别

python - 列表理解之谜 - Python