如何删除文件名中的点而不删除扩展名中的点

问题描述

假设我正在一个包含不同扩展名文件(例如:.doc,.xlsx,.ppt,.pptx)的文件夹中进行迭代。我想从文件名而不是扩展名中删除点('。')。如果我只是这样做:

def filename_replacer(file_name):
    extension = file_name[-4:]
    raw_name = file_name[:-4]       
    new_name = raw_name.replace(".","_")
    new_name = new_name + extension
    return new_name

file = "Remove.TheDotReport.xlsx"
cleaned_file = filename_replacer(file)

结果不正确(例如:Remove_TheDotReport_xlxs)。如何在不弄乱扩展名的情况下始终删除文件中的点?

解决方法

使用os.path.splitext首先将扩展名取出。

import os

def filename_replacer(filename):
  fname,fext = os.path.splitext(filename)
  return fname.replace(".","_") + fext