Bu iyi çalışıyor:
os.path.join(dir_name, base_filename + "." + filename_suffix)
os.path.join()
Yalnızca farklı işletim sistemleri farklı yol ayırıcı karakterler kullandığından var olduğunu unutmayın . Bu farklılığı düzeltir, böylece platformlar arası kodun her işletim sistemi için özel durumlarla karıştırılması gerekmez. Dosya adı "uzantıları" için bunu yapmaya gerek yoktur (bkz. Dipnot), her işletim sisteminde her zaman nokta karakteriyle adın geri kalanına bağlanırlar.
Yine de bir işlev kullanmak sizi daha iyi hissettiriyorsa (ve kodunuzu gereksiz yere karmaşıklaştırmayı seviyorsanız), bunu yapabilirsiniz:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Kodunuzu temiz tutmayı tercih ederseniz, noktanın sonekini eklemeniz yeterlidir:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(Bu yaklaşım , python 3.4'te tanıtılan pathlib'deki sonek kurallarıyla da uyumludur .)
Dipnot: Micorsoft olmayan işletim sistemlerinde dosya adı "uzantısı" diye bir şey yoktur. Windows'daki varlığı, MS-DOS ve FAT tarafından on yıllardır ölü olan CP / M'den ödünç alınmıştır. Birçoğumuzun görmeye alışık olduğu nokta artı üç harf, yerleşik bir anlamı olmayan diğer tüm modern işletim sistemlerindeki dosya adının sadece bir parçasıdır.
.
. Bunun için kullanabilirsinizos.extsep
.