Pythoni c способ загрузки файлов с одинаковым именем - PullRequest
3 голосов
/ 30 мая 2020

Я использую pathlib.Path(), чтобы проверить, существует ли файл, и открываю его как изображение, используя rasterio .

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

Однако некоторые файлы в каталоге I Я загружаюсь с немного другим именем файла, например, my_filename.tif (без дефиса) или my_file_name.tif (с подчеркиванием вместо дефиса).

Все имена файлов имеют одинаковую базовую c структуру. Есть ли лучший способ вызвать 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")

1 Ответ

1 голос
/ 30 мая 2020

Вы можете использовать регулярное выражение (или выражения), чтобы увидеть, совпадают ли какие-либо файлы в вашем каталоге. Но вы также можете просто проверить, есть ли в имени файла все необходимые компоненты. Вот пример, который вы можете адаптировать:

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

Будет выбран первый элемент, содержащий все необходимые компоненты. Если у вас есть c требования к форме, которую должны принимать компоненты, я бы предложил маршрут регулярного выражения, в котором вы используете регулярные выражения, которые соответствуют тому, что вам нужно. вот документация для пакета регулярных выражений re in python 3.

Надеюсь, это поможет, Удачного кодирования!

...