前言 前几天把手机图片迁移到了电脑,但是名称全是乱的,实在是看着不舒服,因此用Python实现了一个按照时间对文件进行批量重命名的脚本。
最初版本(只能进行编号 ) 以前写过一个,但没想着用时间来命名,只进行了简单的编号
效果预览
代码展示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 import osfrom re import Mclass BatchRename (): ''' 批量重命名文件夹中的图片文件 ''' def __init__ (self ): self.path = 'D:/Download/图片/新建文件夹/bili' def rename (self ): filelist = os.listdir(self.path) total_num = len (filelist) i = 1 m = 0 l = 0 n = 0 for item in filelist: if item.endswith('.jpg' ): end = '.jpg' m = m + 1 elif item.endswith('.png' ): end = '.png' l = l + 1 elif item.endswith('.webp' ): end = '.webp' n = n + 1 src = os.path.join(os.path.abspath(self.path), item) srcName = src.split('\\' )[-1 ] dst = os.path.join(os.path.abspath(self.path),'dm-' + str (i) + end) dstName = dst.split('\\' )[-1 ] try : os.rename(src, dst) print ("把 %s 重命名为 %s" % (srcName, dstName)) i = i + 1 except : continue print ("总共 %d 个图片,本次重命名了 %d 个图片。其中 %d 个 jpg,%d 个 png,%d 个 webp" % (total_num, i-1 , m, l, n)) if __name__ == '__main__' : demo = BatchRename() demo.rename()
效果预览
代码展示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 import osimport time''' 根据文件的修改时间,对大量文件进行重命名,并保留其后缀名。 ''' def get_file_date (filepath, format ): ''' 获取文件的时间戳,这里主要返回文件的时间,原时间一般为修改时间 st_atime (访问时间), st_mtime (修改时间), st_ctime(创建时间) ''' statinfo = os.stat(filepath) temp_time = time.localtime(statinfo.st_mtime) return time.strftime(format , temp_time) if __name__ == "__main__" : count = 0 dirname = r'D:\Download\bili' os.chdir(dirname) basenames = os.listdir(dirname) format = '%Y%m%d-%Hh%Mm%Ss' a = 0 b = 0 c = 0 d = 0 for basename in basenames: filepath = dirname+'\\' +basename str_time = str (get_file_date(filepath, format )) file_suffix = os.path.splitext(basename)[1 ] if file_suffix == '.jpg' : a = a + 1 elif file_suffix == '.png' : b = b + 1 elif file_suffix == '.webp' : c = c + 1 else : d = d + 1 try : newname = str_time+file_suffix os.rename(basename, newname) print (basename+' To ' +newname) except Exception as e: if e.args[0 ] == 17 : i = 1 while True : try : newname = str_time+'_' +str (i)+file_suffix os.rename(basename, newname) print (basename+' To ' +newname) break except Exception as e: i = i+1 continue else : print (e) print ('全部重命名完成,共更改了 %d 个文件。其中 %d 个 jpg,%d 个 png,%d 个 webp' % (a+b+c+d, a, b, c))