以Python 3为例,重命名目录中的所有文件名可以有多种方法实现,以下是其中一种比较常用的方法及其详细步骤。
1. 代码实现步骤
1.1 导入模块
首先,需要导入Python标准库中的os
模块,该模块提供了访问操作系统功能的接口,其中包括了重命名文件的函数。
import os
1.2 获取文件列表
使用os.listdir()
函数获取目标文件夹中的所有文件名,并保存到一个列表中。
path = r'/path/to/folder' # 目标文件夹路径
files = os.listdir(path) # 获取目标文件夹中的所有文件名
1.3 遍历文件列表并执行重命名
遍历文件列表,并通过os.rename()
函数重命名每个文件名。
for filename in files:
if not os.path.isdir(filename): # 排除文件夹名
newname = filename.replace('oldname', 'newname') # 根据需求生成新文件名
os.rename(filename, newname) # 执行重命名操作
上述代码中,replace()
函数用于在文件名中查找指定的字符串oldname
,并用新字符串newname
替换它,然后将新文件名传递给os.rename()
函数进行重命名操作。
1.4 测试代码
为了确保代码能够正确执行,需要添加一些测试代码进行验证,比如输出重命名后的文件名。
for filename in os.listdir(path):
print(filename)
2. 示例说明
2.1 重命名所有txt文件
假设我们有一个文件夹/home/user/documents
,其中包含一些txt文件,我们需要将其中所有文件名中的日期格式从yyyymmdd改为yyyy-mm-dd的形式。通过如下代码实现:
import os
path = r'/home/user/documents'
files = os.listdir(path)
for filename in files:
if filename.endswith('.txt'): # 仅处理.txt文件
newname = filename[:4] + '-' + filename[4:6] + '-' + filename[6:8] + filename[8:]
os.rename(os.path.join(path, filename), os.path.join(path, newname))
上述代码中,首先使用os.path.join()
函数将文件夹路径和文件名合并成完整的路径,然后将新文件名传递给os.rename()
函数进行重命名操作。
2.2 复制并重命名图片文件
现在假设我们有一个文件夹/home/user/photos
,其中包含一些jpg和png格式的图片文件,我们希望将其中所有图片文件复制到另一个文件夹,并重命名为“原文件名_日期.jpg/png”的形式。通过如下代码实现:
import os
import shutil
from datetime import date
src_path = r'/home/user/photos'
dst_path = r'/home/user/new_photos'
files = os.listdir(src_path)
for filename in files:
if filename.endswith('.jpg') or filename.endswith('.png'): # 只处理jpg和png文件
dt = str(date.today()) # 获取当天日期,格式为yyyy-mm-dd
newname = filename[:-4] + '_' + dt + filename[-4:] # 生成新文件名
src_file = os.path.join(src_path, filename)
dst_file = os.path.join(dst_path, newname)
shutil.copyfile(src_file, dst_file) # 复制文件
上述代码中,使用了Python标准库中的shutil
模块,它提供了一些高级的文件操作函数,比如上述代码中的copyfile()
函数即为其中之一,用于复制文件。同时,还使用datetime
库中的date.today()
函数获取当天日期,并将其转换为字符串以便用于重命名文件。