加载具有相似文件名的文件的 Pythonic 方式

标签 python python-3.x pathlib

我正在使用 pathlib.Path() 检查文件是否存在,并使用 rasterio 将其作为图像打开.

filename = pathlib.Path("./my_file-name.tif")

但是,我正在加载的目录中的某些文件的文件名略有不同,例如 my_filename.tif(没有连字符)或 my_file_name .tif(带下划线而不是连字符)。

所有文件名都具有相同的基本结构。有没有更好的方法来调用 pathlib.Path()filename.tif 中所有可能的变化,而不是仅仅检查它们是否都存在? 例如

filename = pathlib.Path("./my_file-name.tif")
if not file.is_file():
    file = Path("./my_file_name.tif")
if not file.is_file():
    file = Path("./my_filename.tif")

最佳答案

您可以使用正则表达式(或多个表达式)来查看您的目录中是否有任何文件匹配。但您也可以只检查文件名是否包含所有必要的组件。这是您可以改编的示例:

dir = pathlib.Path("./")
must_contain = ['my', 'file', 'name', '.tif']
true_filepath = None
for filepath in os.listdir(dir):
    if all([item in filepath for item in must_contain]):
        true_filepath = filepath
        break

这将选择包含所有必要组件的第一个项目。如果您对组件必须采用的形式有特定要求,那么我建议使用正则表达式路由,您可以在其中使用符合您需要的正则表达式。这是正则表达式包的文档 re在 python 3 中。

希望这对您有所帮助,编码愉快!

关于加载具有相似文件名的文件的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62094735/

相关文章:

python - 在Python中运行一个线程一段时间

python - 如何在 Python 中停止 os.system()?

python - 在 Python (Pillow) 中使用大图像优化内存使用

python - 如何为 python 提示工具包创建单元测试?

python - 每当我尝试在 PyCharm 上配置 Python 解释器时都会收到错误

python - 如何均衡图像并将其绘制为带有 openCV 和 numpy 的直方图

Python 电子邮件解析问题

python - 如何修复文件移动脚本读取文件名时出现 FileNotFoundError 错误?

python - 对 Path.open 的模拟/测试调用

python - 有没有一种惯用的方法可以使用 Python 的 Pathlib 添加扩展?