Вы здесь вообще какую-то ерунду пытаетесь делать.
Функция open ожидает в качестве аргумента конкретную строку. Функция re.compile возвращает скомпилированное регулярное выражение, которое строкой ВООБЩЕ не является. И даже не унаследовано от нее.
Строковое представление этого результата соответствует выражению, которое его породило.
cartoon = re.compile(".jpg")
print(str(cartoon))
# Выведет: re.compile('.jpg')
Файловая система не умеет работать с таким. Ей нужна нормальная строчка с конкретным именем файла.
Соответственно, вам нужно поступать так:
1. Получаете список имеющихся файлов в заданной директории.
2. Находите там один подходящий файл.
3. Передаёте его имя в явном и конкретном виде в функцию open.
И регулярные выражения здесь могут использоваться только на этапе 2, но никак не на этапе 3.