Как узнать полное имя файла по его началу?

Нужны файлы ssfn8863805031775494 и ssfn8786241405251389450. Они находятся в корневой папке стима, но последние цифры после ssfn рандомные.

Как мне узнать название файла полностью?


Ответы (2 шт):

Автор решения: MaxU

воспользуйтесь pathlib:

from pathlib import Path

steam_dir = Path("/path/to/steam")

ssfn_files = list(steam_dir.glob("ssfn*"))
→ Ссылка
Автор решения: Andy Pavlov

Можно также воспользоваться библиотекой os

Вариант для получения только имен файлов:

import os

path = 'C:\\Program Files (x86)\\Steam'
mask = 'ssfn'
files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f)) and f.startswith(mask)]

Вариант получения полных путей к файлам

files = [f for f in map(lambda x: os.path.join(path, x), os.listdir(path)) if os.path.isfile(f) and os.path.basename(f).startswith(mask)]

Через os.listdir(path) получаем список содержимого папки, через os.path.isfile(f) проверяем, что файл, и с помощью f.startswith(mask) проверяем, что файл начинается с заданной маски.

Вариант с копированием файлов через copy2:

import os
from shutil import copy2

path = 'C:\\Program Files (x86)\\Steam'
dest = os.getcwd()
mask = 'ssfn'
files = [f for f in map(lambda x: os.path.join(path, x), os.listdir(path)) if os.path.isfile(f) and os.path.basename(f).startswith(mask)]
for f in files:
    copy2(src=f, dst=dest)
→ Ссылка