Python 批量修改文件名

Python 批量修改文件名

Python 批量修改文件名

1. 引言

在我们日常的工作中,经常会遇到需要批量修改文件名的情况。比如,需要给一批照片添加日期前缀,或者将一系列文件按照特定规则重命名等等。手动一个个修改文件名非常繁琐,这时候就需要借助 Python 的能力来进行自动化处理。

本文将详细介绍如何使用 Python 批量修改文件名,包括获取文件列表、修改文件名和运行示例代码。

2. 获取文件列表

首先,我们需要获取需要修改的文件列表。Python 的 os 模块提供了一些获取文件列表的方法,例如 os.listdir()os.walk()

2.1 使用 os.listdir()

os.listdir() 方法可以返回指定目录下的所有文件和文件夹的列表。我们可以通过循环遍历这个列表,获取所有文件的绝对路径。

import os

folder_path = '/path/to/folder'
file_list = os.listdir(folder_path)

for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path):
        print(file_path)

上述代码中,folder_path 是需要修改文件名的文件夹路径,os.listdir() 返回的列表中包含了该文件夹下所有文件和文件夹的名称。我们通过循环迭代列表,使用 os.path.join() 函数将文件夹路径和文件名组合成绝对路径,然后通过 os.path.isfile() 判断是否是文件,最后打印文件的绝对路径。

2.2 使用 os.walk()

os.walk() 方法可以遍历一个目录下的所有文件和文件夹,包括子目录。它返回一个生成器对象,每次迭代都会返回一个三元组 (dirpath, dirnames, filenames)

import os

folder_path = '/path/to/folder'

for dirpath, dirnames, filenames in os.walk(folder_path):
    for file_name in filenames:
        file_path = os.path.join(dirpath, file_name)
        print(file_path)

上述代码中,dirpath 是当前所处目录的路径,dirnames 是当前目录下的所有子目录的名称列表,filenames 是当前目录下的所有文件的名称列表。我们通过嵌套的循环迭代 filenames 列表,使用 os.path.join() 将文件夹路径和文件名组合成绝对路径,然后打印文件的绝对路径。

3. 修改文件名

获取到文件列表后,我们可以根据需求进行文件名的修改。Python 的 os 模块也提供了一些文件名修改的方法,例如 os.rename()

3.1 使用 os.rename()

os.rename() 方法可以将文件或文件夹重命名。我们可以通过循环遍历文件列表,对每个文件进行重命名操作。

import os

folder_path = '/path/to/folder'
file_list = os.listdir(folder_path)

for file_name in file_list:
    old_file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(old_file_path):
        new_file_name = "new_" + file_name  # 新的文件名规则
        new_file_path = os.path.join(folder_path, new_file_name)
        os.rename(old_file_path, new_file_path)

上述代码中,我们在循环的过程中给每个文件名添加了前缀 "new_",并将新的文件名规则赋值给 new_file_name 变量。然后,使用 os.rename() 方法将旧的文件路径 old_file_path 改为新的文件路径 new_file_path

4. 运行示例代码

为了更好地理解批量修改文件名的过程,我们来运行一个简单的示例代码。假设我们有一个文件夹,其中包含了一些照片文件,我们需要给这些照片文件添加日期前缀。

4.1 示例代码

import os
import datetime

folder_path = '/path/to/photos'
file_list = os.listdir(folder_path)

for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path):
        file_datetime = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
        new_file_name = file_datetime.strftime("%Y%m%d_") + file_name
        new_file_path = os.path.join(folder_path, new_file_name)
        os.rename(file_path, new_file_path)

上述代码中,我们使用了 datetime 模块来获取文件的修改时间。通过 os.path.getmtime() 方法获取文件的修改时间戳,并使用 datetime.datetime.fromtimestamp() 方法将其转换为可读的日期时间格式。然后,我们使用 strftime() 方法将日期时间格式化为我们想要的形式,比如 "%Y%m%d_" 表示年月日的格式。

4.2 示例代码运行结果

运行示例代码后,照片文件的文件名将被修改为日期前缀的形式。例如,原始文件名为 "photo.jpg",修改后的文件名将为 "20220101_photo.jpg"

5. 总结

通过使用 Python,我们可以轻松实现批量修改文件名的自动化过程。首先,我们需要获取文件列表,可以使用 os.listdir()os.walk() 方法;然后,根据具体需求进行文件名的修改,可以使用 os.rename() 方法;最后,我们可以运行示例代码来加深理解。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程