编程学习网 > 编程语言 > Python > Python3实现大规模文件重命名的三种方式教程
2023
06-12

Python3实现大规模文件重命名的三种方式教程


大规模文件重命名是一项常见任务,特别是在需要对数千或数百万个文件进行排序和编号时。在此项目中,我们将讨论三种不同的 Python 3 文件重命名方式,从而使文件名更具描述性或规范化,并减少与文件名有关的问题。

项目代码
1、重命名为递归编号的文件
以下是将文件重命名为递归编号的文件名格式的示例代码:

import os
path = '/path/to/folder'
files = os.listdir(path)
for i, file in enumerate(sorted(files)):
    ext = os.path.splitext(file)[1]
    os.rename(os.path.join(path, file), os.path.join(path, f'{i+1:04d}{ext}'))
将您想要将文件重命名的文件夹路径(即 `path`)和文件名后缀(即 `ext`)替换到代码中即可进行文件重命名。‍

2、根据文件的创建时间重命名
以下是根据文件的创建时间将文件重命名的示例代码:

import os
import time
path = '/path/to/folder'
files = os.listdir(path)
for file in files:
    file_path = os.path.join(path, file)
    creation_time = os.path.getctime(file_path)
    formatted_time = time.strftime('%Y%m%d_%H%M%S', time.localtime(creation_time))
    new_file_name = f'{formatted_time}{os.path.splitext(file_path)[1]}'
    os.rename(file_path, os.path.join(path, new_file_name))
3、使用正则表达式重命名文件

以下是使用正则表达式将文件重命名的示例代码:

import os
import re
path = '/path/to/folder'
files = os.listdir(path)
pattern = re.compile(r'\d{3,4}')
for file in files:
    file_path = os.path.join(path, file)
    match = re.search(pattern, file)
    if match:
        new_file_name = f'{match.group(0)}{os.path.splitext(file_path)[1]}'
        os.rename(file_path, os.path.join(path, new_file_name))
将正则表达式模式替换到代码中即可使用该正则表达式将文件重命名。‍
三种方式各自优势

1、重命名为递归编号的文件

第一种文件重命名方式是将文件重命名为递归编号的文件名格式。该方法将文件名按照数字顺序逐一编号。这种方式很常见,因为它可以按文件名排序文件。

import os
path = '/path/to/folder'
files = os.listdir(path)
for i, file in enumerate(sorted(files)):
    ext = os.path.splitext(file)[1]
    os.rename(os.path.join(path, file), os.path.join(path, f'{i+1:04d}{ext}'))
在上述代码中,您应该将文件夹路径更改为您要重命名的文件夹路径。在这个例子中,我们将文件重命名为以递归编号格式显示的新文件名。递归编号格式意味着文件名将由数字组成。使用 `enumerate` 函数和 Python 3 的 `f-string` 功能,对文件进行递归编号,并将其重命名为新编号的名称。

2、根据文件的创建时间重命名

第二种文件重命名方式是根据文件的创建时间将文件重命名。该方法将文件名更改为日期和时间的组合。这种方式的优点在于,我们可以将文件名更改为与文件相关的信息,例如创建日期和时间或者拍摄日期和时间,这样可以方便分类和检索文件。

import os
import time
path = '/path/to/folder'
files = os.listdir(path)
for file in files:
    file_path = os.path.join(path, file)
    creation_time = os.path.getctime(file_path)
    formatted_time = time.strftime('%Y%m%d_%H%M%S', time.localtime(creation_time))
    new_file_name = f'{formatted_time}{os.path.splitext(file_path)[1]}'
    os.rename(file_path, os.path.join(path, new_file_name))
在上述代码中,我们使用 `os.path.getctime` 函数来检索文件的创建时间。然后使用 Python 的 date/time module `time` 将日期和时间转换为字符串格式,并使用这个新的字符串格式来重命名文件。

3、使用正则表达式重命名文件

第三种文件重命名方式是使用正则表达式将文件重命名。正则表达式是一种非常强大的字符串操作工具,可以帮助我们从文件名中提取信息,并将其用于重命名文件。这种方式通常比其他两种方式更加灵活,但是需要更多的工作,因为您需要编写正则表达式模式来匹配您要查找和重命名的文件。

import os
import re
path = '/path/to/folder'
files = os.listdir(path)
pattern = re.compile(r'\d{3,4}')
for file in files:
    file_path = os.path.join(path, file)
    match = re.search(pattern, file)
    if match:
        new_file_name = f'{match.group(0)}{os.path.splitext(file_path)[1]}'
        os.rename(file_path, os.path.join(path, new_file_name))
在上述代码中,我们使用一个正则表达式模式来匹配文件名中的数字,并为每个文件生成一个新的、基于匹配字符串的文件名。这种方式比其他两种方式需要更多的编写,但是它非常灵活,因为您可以在正则表达式模式中包括任何您需要的匹配规则。

通过这三种 Python 3 文件重命名方式,您可以更轻松地对大量文件进行编号和重命名,并开始一个更好的文件管理过程。无论您选择的方式是 编写递归编号的脚本代码还是使用正则表达式,本篇文章都提供了一些工具和思路,让您能够以一种高效和精确地方式完成文件重命

以上就是Python3实现大规模文件重命名的三种方式教程的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取