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
.os.path.join(dir_name, base_filename, os.extsep, extension)
. Twoja odpowiedź jest całkowicie poprawna.+
między częściami nazw plików.os.path.join()
dodaje separatory ścieżek specyficzne dla systemu operacyjnego (/
na przykład) między argumentami (ponieważ @ sәɹoɈ poprawnie ma je w swojej odpowiedzi. Dlatego poprawna forma fragmentu kodu to:os.path.join(dir_name, base_filename + os.extsep + extension)
Jeśli masz szczęście, że korzystasz z Pythona 3.4+, możesz użyć
pathlib
:źródło
with_suffix()
zastąpi go zamiast dołączania. Chcesz czegoś takiegoPath(dirname, filename2 + suffix)
Um, czemu nie tylko:
źródło
Po prostu użyj,
os.path.join
aby połączyć swoją ścieżkę z nazwą pliku i rozszerzeniem. Użyj,sys.argv
aby uzyskać dostęp do argumentów przekazanych do skryptu podczas jego wykonywania:Po prostu uruchom skrypt, taki jak:
źródło