这段代码是用来将特定文件夹内的 .jpg
图像文件按照一定规则进行重命名的操作。这里的规则是将文件名中 IMG_
后的数字部分提取出来,并以数字的顺序重新命名文件。
以下是代码的主要部分:
reg
正则表达式对象:用于从文件名中提取IMG_
后的数字部分。path
:需要进行处理的文件夹路径。os.walk(path)
:遍历路径下的所有文件和子文件夹,获取每个文件夹的路径(dirpath
)、子文件夹列表(_
)和文件名列表(filename
)。glob(osp.join(dirpath, '*.jpg'))
:使用glob
函数获取当前文件夹下所有.jpg
文件的列表。- 遍历
jpgs
列表,对每个.jpg
文件进行处理:
- 提取文件名中的数字部分。
- 使用索引加一(格式化为两位数)作为新的文件名。
- 构建新的文件路径
dst
。 - 使用
os.rename()
函数进行重命名。
注意:
- 该代码根据文件名中
IMG_
后的数字部分进行重命名,但在文件名中没有IMG_
的情况下,可能会出现错误。你可能需要添加一些条件来处理这种情况。 - 在进行文件重命名时,需要确保新的文件名是唯一的,否则可能会覆盖已有的文件。在你的代码中,使用索引
jpgs.index(jpg)
确保了新文件名的唯一性。 - 代码中有一段注释掉的部分,似乎是将文件名中的
'微信截图'
替换为'IMG'
,但是这段代码没有被执行,你可以根据需要进行调整。 - 文件操作涉及文件重命名,建议在实际操作前备份文件,以防止意外的数据损失。
import os
import os.path as osp
import re
import shutil
from glob import glob
reg=re.compile(r'(?<=IMG_).*')
path=r'./'
for dirpath,_,filename in os.walk(path):
jpgs=glob(osp.join(dirpath,'*.jpg'))
if jpgs:
for jpg in jpgs:
name,_=osp.splitext(jpg)
nm=osp.basename(name)
mat=reg.search(nm)
if mat:
res=str(jpgs.index(jpg)+1).zfill(2)
print(res)
src=jpg
dst=osp.join(dirpath,res+'.jpg')
os.rename(src,dst)
# for dirpath,_,filename in os.walk('./'):
# jp=glob(osp.join(dirpath,'*.jpg'))
# for s in jp:
# jg=s.replace('微信截图','IMG')
# os.rename(s,jg)
评论前必须登录!
注册