python - 加载具有相似文件名的文件的 Pythonic 方式
问题描述
我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
这将选择包含所有必要组件的第一个项目。如果您对组件必须采用的形式有特定要求,那么我建议您使用正则表达式路线,您可以在其中使用符合您需要的正则表达式。这是python 3 中正则表达式包re的文档。
希望这会有所帮助,快乐编码!
推荐阅读
- python - 如何使用python将具有相同名称的行移动到列中
- python - 如何从每个类中提取两个值并将其放入测试集中?
- swift - ExpressibleByCustomTypeLiteral
- python - Python Random - 每次我使用打印时从列表中更改随机值
- reactjs - 为什么重置事件不更新状态
- java - 如何获取目录和子目录并按父子目录分组
- octave - 如何在 GNU Octave 中正交化一组向量?
- recaptcha - 如何查找过去的 reCaptcha 帐户设置?
- html - 在实际元素下方滚动一点
- angular - Angular PATCH 语句中的问题