Це добре працює:
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)
(Цей підхід також є сумісним із умовами суфіксу в pathlib , що було введено в python 3.4.)
Зноска: Не існує такого поняття, як ім'я файлу "розширення" в операційних системах, які не є Micorsoft. Його присутність у Windows походить від MS-DOS та FAT, які запозичили її у CP / M, яка вже десятиліттями мертва. Та точка-плюс-три букви, яку багато хто з нас звикли бачити, є лише частиною назви файлу на всіх інших сучасних ОС, де він не має вбудованого значення.
.
. Для цього можна скористатисяos.extsep
.