Как получить полное имя папки, состоящее только из первых 10 символов

Итак, у меня есть следующее приложение...

У меня есть папка, в которой больше десяти тысяч папок. Каждая папка - это работа, и все они имеют одинаковый формат:

"десять цифр" + _ + "название задания"

Нравится:

"1234567890_Stackru"

Как мне найти полное имя этой папки, состоящее только из первых 10 цифр?

Это мой код Python: Где path это мой текущий рабочий каталог и job мои десять цифр я хочу найти

for dirs in os.listdir(path):
    if fnmatch.fnmatch(dirs, job+"*"):
        job_name = dirs
        break

job_path=path+'\\'+job_name
print(job_path)

С помощью этого кода я могу найти полное название задания, но независимо от того, какое задание я прошу, его поиск всегда занимает 23 секунды.

Есть ли более быстрый способ найти это?

Я имею в виду, что если я вручную захожу в папки с заданиями, я могу искать в папке за 4-5 секунд, но вручную.

2 ответа

Вот как вы можете использовать glob.glob():

from glob import glob

path = 'C:\\Users\\User\\Desktop\\Folder'
ten_digits = '1234567890'
for file in glob(f"{path}\\{ten_digits}_*"):
    print(file)

Может ОС быстрее, можно попробовать:

import subprocess
number = 54932034857
dirname = subprocess.run([f"ls -d {number}*"], 
    stdout=subprocess.PIPE,
    shell=True).stdout.decode("utf-8").split("\n")[0]
 print(dirname) 

Возможно, вы можете использовать dir вместо того ls если вы на окнах.

Другие вопросы по тегам