这很好用:
os.path.join(dir_name, base_filename + "." + filename_suffix)
请记住,这种os.path.join()
存在仅是因为不同的操作系统使用不同的路径分隔符。它可以消除这种差异,因此跨平台代码不必因每种操作系统的特殊情况而混乱。无需对文件名“扩展名”执行此操作(请参见脚注),因为在每个OS上,它们始终以点字符连接到名称的其余部分。
如果仍然使用函数会让您感觉更好(并且您喜欢使代码不必要地复杂化),则可以执行以下操作:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
如果您希望保持代码干净,只需在后缀中包含点:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
该方法也恰好与pathlib中的后缀约定兼容,在询问了此问题后,它在python 3.4中引入。不需要向后兼容的新代码可以做到这一点:
suffix = '.pdf'
pathlib.PurePath(dir_name, base_filename + suffix)
如果只处理本地操作系统的路径Path
,PurePath
则可能更喜欢使用较短的名称。
警告:请勿with_suffix()
为此使用pathlib 。base_filename
如果该方法包含点,它将损坏。
脚注:在Micorsoft操作系统之外,没有文件名“ extension”之类的东西。它在Windows上的存在来自MS-DOS和FAT,它们是从CP / M借来的,而CP / M已经死了数十年。我们中许多人习惯看到的点加三字母只是其他所有现代OS上文件名的一部分,它没有内置的含义。