Ваша проблема в том, что точка DOT слишком широка и фактически содержит обратную косую черту, поэтому ваше регулярное выражение соответствует первой обратной косой черте, а затем all пути до расширения ...
Чтобы сделать регулярное выражение намного проще и, кроме того, сделать кросс-платформенный код, вы можете использовать пакет os.path
. Предполагая, что вы просматриваете каталог:
import os
import re
for file in os.listdir(dir):
if re.search(".+sav$", file):
return basename
Кроме того, в этом случае регулярное выражение не так уж нужно, и вы можете сделать:
import os
for file in os.listdir(dir):
if os.path.splitext(file) == ".sav":
return basename
Обратите внимание, что listdir()
возвращает имена файлов , а не полные пути, что позволяет сэкономить половину работы ...