详解Python 重命名目录中的所有文件名

  • Post category:Python

重命名目录中所有文件名可以使用Python的os和shutil模块。下面给出详细步骤和示例说明。

步骤一:导入所需模块

import os
import shutil
  • os模块:提供了访问操作系统功能的接口,可以用于处理文件和目录的名称。
  • shutil模块:提供了高级的文件操作功能,比如复制、移动和删除文件。

步骤二:检查目录并遍历文件

dir_path = '/path/to/dir'
file_names = os.listdir(dir_path)
for file_name in file_names:
    if os.path.isfile(os.path.join(dir_path, file_name)):
        # 重命名文件名
  • dir_path:指定目录路径。
  • file_names:获取目录下所有的文件和目录名列表。
  • os.path.isfile(path):判断path是否是一个文件。
  • os.path.join(path, *paths):连接目录和文件名,生成一个新的路径。

步骤三:重命名文件名

dir_path = '/path/to/dir'
file_names = os.listdir(dir_path)
for file_name in file_names:
    if os.path.isfile(os.path.join(dir_path, file_name)):
        file_ext = os.path.splitext(file_name)[-1] # 获取文件后缀
        new_file_name = 'new_name' + file_ext # 根据规则生成新的文件名
        os.rename(os.path.join(dir_path, file_name), os.path.join(dir_path, new_file_name)) # 重命名文件名
  • os.path.splitext(path):分离文件名和扩展名,返回一个元组。
  • new_file_name:根据需要重命名的规则生成新的文件名。这里可根据需要进行修改。

示例一:将指定目录下所有文件名后添加后缀

import os

dir_path = '/Users/username/Documents/test' # 需要重命名的目录
suffix = '_new' # 需要添加的后缀,可根据需要修改

file_names = os.listdir(dir_path)
for file_name in file_names:
    if os.path.isfile(os.path.join(dir_path, file_name)):
        # 获取文件名和后缀
        file_base, file_ext = os.path.splitext(file_name)
        # 根据规则生成新的文件名
        new_file_name = file_base + suffix + file_ext 
        # 对文件进行重命名
        os.rename(os.path.join(dir_path, file_name), os.path.join(dir_path, new_file_name))

示例二:将指定目录下所有文件名的空格替换成下划线

import os

dir_path = '/Users/username/Documents/test' # 需要重命名的目录

file_names = os.listdir(dir_path)
for file_name in file_names:
    if os.path.isfile(os.path.join(dir_path, file_name)):
        # 获取文件名和后缀
        file_base, file_ext = os.path.splitext(file_name)
        # 将空格替换成下划线
        new_file_name = file_base.replace(' ', '_') + file_ext 
        # 对文件进行重命名
        os.rename(os.path.join(dir_path, file_name), os.path.join(dir_path, new_file_name))

这样就实现了将指定目录下所有文件名后添加后缀和将指定目录下所有文件名的空格替换成下划线的功能。可以根据需要修改规则来实现不同的重命名需求。