Это прекрасно работает:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Имейте в виду, что os.path.join()
существует только потому, что разные операционные системы используют разные символы разделителя пути.Это сглаживает эту разницу, поэтому кросс-платформенный код не нужно загромождать особыми случаями для каждой ОС.Нет необходимости делать это для имени файла «расширения» (см. Сноску), потому что они всегда связаны с остальной частью имени с помощью символа точки в каждой ОС.
Если использование функции в любом случае делает васчувствовать себя лучше (и вам нравится без необходимости усложнять ваш код), вы можете сделать это:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Если вы предпочитаете поддерживать свой код в чистоте, просто включите точку в суффикс:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
Сноска. В операционных системах, отличных от Micorsoft, не существует такого понятия, как расширение имени файла.Его присутствие в Windows происходит от MS-DOS и FAT, которые позаимствовали его у CP / M, который был мертв в течение десятилетий.Точка плюс три буквы, которые многие из нас привыкли видеть, является лишь частью имени файла в любой другой современной ОС, где оно не имеет встроенного значения.