To działa dobrze:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Należy pamiętać, że os.path.join()
istnieje tylko dlatego, że różne systemy operacyjne używają różnych znaków separatora ścieżek. Wygładza tę różnicę, więc kod międzyplatformowy nie musi być zaśmiecany specjalnymi przypadkami dla każdego systemu operacyjnego. Nie ma potrzeby tego robić w przypadku „rozszerzeń” nazw plików (patrz przypis), ponieważ w każdym systemie operacyjnym są one zawsze połączone z resztą nazwy za pomocą kropki.
Jeśli użycie funkcji i tak sprawia, że czujesz się lepiej (i lubisz niepotrzebnie komplikować swój kod), możesz to zrobić:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Jeśli wolisz, aby kod był czysty, po prostu umieść kropkę w sufiksie:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(To podejście jest również zgodne z konwencjami sufiksów w pathlib , które zostały wprowadzone w Pythonie 3.4).
Przypis: W systemach operacyjnych innych niż Micorsoft nie istnieje coś takiego jak „rozszerzenie” nazwy pliku. Jego obecność w systemie Windows pochodzi z MS-DOS i FAT, które zapożyczyły go od CP / M, który nie żyje od dziesięcioleci. Ta kropka plus trzy litery, do których wielu z nas jest przyzwyczajonych, to tylko część nazwy pliku w każdym innym nowoczesnym systemie operacyjnym, w którym nie ma wbudowanego znaczenia.
.
. Do tego można użyćos.extsep
.