Cela fonctionne bien:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Gardez à l'esprit que cela os.path.join()
n'existe que parce que différents systèmes d'exploitation utilisent des caractères de séparation de chemin différents. Cela atténue cette différence afin que le code multiplateforme ne soit pas encombré de cas particuliers pour chaque système d'exploitation. Il n'est pas nécessaire de faire cela pour les "extensions" de nom de fichier (voir note de bas de page) car elles sont toujours connectées au reste du nom avec un caractère point, sur chaque OS.
Si l'utilisation d'une fonction vous permet de vous sentir mieux (et que vous aimez compliquer inutilement votre code), vous pouvez le faire:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Si vous préférez garder votre code propre, incluez simplement le point dans le suffixe:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
Cette approche est également compatible avec les conventions de suffixe dans pathlib , qui a été introduite dans python 3.4 après que cette question a été posée. Un nouveau code qui ne nécessite pas de compatibilité descendante peut le faire:
suffix = '.pdf'
pathlib.PurePath(dir_name, base_filename + suffix)
Vous préférerez peut-être le plus court Path
plutôt que PurePath
si vous ne gérez que des chemins pour le système d'exploitation local.
Attention: n'utilisez pas de pathlib with_suffix()
à cette fin. Cette méthode sera corrompue base_filename
si elle contient un point.
Note de bas de page: En dehors des systèmes d'exploitation Micorsoft, il n'existe pas de nom de fichier "extension". Sa présence sur Windows vient de MS-DOS et FAT, qui l'ont emprunté à CP / M, mort depuis des décennies. Ce point plus trois lettres que beaucoup d'entre nous ont l'habitude de voir n'est qu'une partie du nom de fichier sur tous les autres systèmes d'exploitation modernes, où il n'a pas de signification intégrée.
.
. Pour cela, on peut utiliseros.extsep
.