Поможете с задачкой на Python?
Нет, вы можете получить листинг каталога по маске glob.glob('*.user'), потом взять максимальное (в алфавитно-цифровом порядке) имя, отрезать у него расширение, превратить в целое число, увеличить на единицу, отформатировать нулями слева и создать новый файл.

last = max(glob.glob('*.user')+[''])
new = (last and int(last.split('.')[0]) or 0) + 1
Ну, не совсем, что-бы чистым циклом.

У вас есть папка. Изначально пустая. Ваш скрипт должен зайти в директорий, посмотреть, пустая она или нет.
Если директория пустая -  генерируем файл 001. и заканчиваем работу.
Если директория не пустая начинаем просматривать файлы последовательно -  001,002.... пока не натыкаемся на последний элемент в этой последовательности. Потом генерируем файл с номером на единицу больший, чем последний встретившийся номер файла. Заканчиваем работу.

Если в будущем у вас некоторая произвольная папка будет уничтожена, скрипт сохранит свою работоспособность.

P.S. Дописанный вами фрагмент вопроса с поочередными попытками открытия файлов -  самый неэффективный из всех, которые можно придумать.