首页 / PYTHON / Python - 批量文件重命名
Python - 批量文件重命名
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python - 批量文件重命名,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3614字,纯文字阅读大概需要6分钟。
内容图文
![Python - 批量文件重命名](/upload/InfoBanner/zyjiaocheng/741/0422ee0825fc4d14954191f5c2a154d0.jpg)
两个目标两个:
1. 输入一组文件名,进行批量重命名;
2. 输入一组目录名,批量重命名各个目录下的文件。
附加功能:
1. 可根据文件的创建日期对文件重新排序;
2. 重命名方式为递增数列,可带前后缀;
3. 可以指定输出目录,如果不指定输出目录,则在原文件夹中重命名,默认为在原文件夹中进行重命名;
4. 可指定在重命名后删除原文件(只有输出目录不同时有效),默认为不删除。
代码:
import os# 获取目录下的子目录
def subdirs(path):
dl = [];
for i in os.walk(path, False):
for d in i[1]:
dl.append(os.path.join(path, d))
return dl
# 获取目录下的子文件
def subfiles(path):
fl = [];
for i in os.walk(path, False):
for f in i[2]:
fl.append(os.path.join(path, f))
return fl
# 根据文件创建时间对文件进行排序
def fsort(files):
files.sort(key = lambda s: os.path.getctime(s))
return files
# 递增数列生成器
class gen:
def __init__(self, prefix = '', suffix = '', seed = 1, digit = 3):
self.prefix = prefix
self.suffix = suffix
self.seed = seed
self.digit = digit
self.it = seed - 1
def gennext(self):
self.it += 1
return '{0}{1:0{3}d}{2}'.format(self.prefix, self.it, self.suffix, self.digit)
def copy(self):
return gen(self.prefix, self.suffix, self.seed, self.digit)
class renamer:
def __init__(self, files, ngen = None, delsrc = False, output = ''):
self.it = 0
self.total = 0
self.files = files
self.delsrc = delsrc
self.target = output
if(ngen is None): self.namegen = gen()
elif(isinstance(ngen, gen)): self.namegen = ngen
else: raise(TypeError, 'ngen参数只接受gen类型的对象')
def rename(src, des, delsrc):
os.rename(src, des)
if(delsrc == True):
os.remove(src)
def run(self):
self.it = 0
self.total = len(self.files)
for f in self.files:
dn = os.path.dirname(f)
ex = os.path.splitext(f)
nn = self.namegen.gennext() + ex[1]
np = ''
sd = self.target == ''
if(sd):
np = os.path.join(dn, nn)
else:
np = os.path.join(self.target, nn)
print('rename: %s' %(np))
renamer.rename(f, np, sd and self.delsrc)
self.it += 1
print('%d work(s) done' %(self.it))
print()
# 重命名给定列表中的所有文件
def fs_rename(files, resort = False, ngen = gen(), delsrc = False, output = ''):
if(resort): fsort(files)
rn = renamer(files, ngen.copy(), delsrc, output)
rn.run()
# 重命名给定目录中的所有文件
def ds_rename(dirs, resort = False, ngen = gen(), delsrc = False, output = ''):
for d in dirs:
fs = subfiles(d)
if(resort): fsort(fs)
print('%d file(s) in %s' %(len(fs), d))
if(output == '') ngen = ngen.copy()
rn = renamer(fs, ngen, delsrc, output)
rn.run()
说明
fs_rename方法对一组文件进行批量重命名。
参数说明:
files: 文件列表;
resort: 是否重新排列文件(按创文件建时间),默认为False;
ngen: 一个gen类型的对象,用于产生文件名;
delsrc: 是否删除原文件,默认为False;
output: 输出路径,默认为'',表示在原文件家中重命名。
ds_rename方法对一组目录中的文件进行批量重命名。
参数说明:
dirs: 目录列表;
resort: 是否重新排列文件(按创文件建时间),默认为False;
ngen: 一个gen类型的对象,用于产生文件名;
delsrc: 是否删除原文件,默认为False;
output: 输出路径,默认为'',表示在原文件家中重命名。
gen类型构造函数创建数列发生器。
参数说明:
prefix: 前缀字符串;
suffix: 后缀字符串;
seed: 起始数;
digit: 数为宽,不够用0补齐。
subdirs方法获取一个目录下的子目录,并返回完整路径。
subfiles方法获取一个目录下的所有文件,并返回完整路径。
fsort方法对一组文件根据其创建时间进行重新排序。
转载于:https://www.cnblogs.com/tracydj/archive/2011/01/27/1945861.html
内容总结
以上是互联网集市为您收集整理的Python - 批量文件重命名全部内容,希望文章能够帮你解决Python - 批量文件重命名所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。