加载具有相似文件名的文件的 Pythonic 方式
Pythonic way of loading files with similar filename
我正在使用 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
这将 select 第一项包含所有必要的组件。如果您对组件必须采用的形式有特定要求,那么我建议使用正则表达式路由,您可以在其中使用符合您需要的正则表达式。这是 python 3.
中正则表达式包 re 的文档
希望这对您有所帮助,编码愉快!
我正在使用 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
这将 select 第一项包含所有必要的组件。如果您对组件必须采用的形式有特定要求,那么我建议使用正则表达式路由,您可以在其中使用符合您需要的正则表达式。这是 python 3.
中正则表达式包 re 的文档希望这对您有所帮助,编码愉快!