Это прекрасно работает:
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
.os.path.join(dir_name, base_filename, os.extsep, extension)
. Ваш ответ совершенно правильный.+
между частями имени файла.os.path.join()
добавляет специфичные для ОС разделители пути (/
например) между аргументами (так как @ sәɹoɈ правильно указывает их в своем ответе. Таким образом, правильная форма вашего фрагмента кода:os.path.join(dir_name, base_filename + os.extsep + extension)
Если вам посчастливилось запустить Python 3.4+, вы можете использовать
pathlib
:источник
with_suffix()
будет заменен вместо добавления. Вы хотите что-то вродеPath(dirname, filename2 + suffix)
Хм, почему бы не просто
источник
Просто используйте,
os.path.join
чтобы объединить ваш путь с именем файла и расширением. Используйтеsys.argv
для доступа к аргументам, переданным скрипту при его выполнении:Просто запустите скрипт как:
источник