- A+
这几天连续分享了多遍关于百度网盘批量重命名文件的文章,今天将继续进行分享文件重命名的方法,同时对各种方法的优劣进行一下比较。
目前新出了更好用的软件界面版工具:百度网盘批量处理大师
一、各方法优劣势比较
一是通过ES浏览器对百度网盘文件批量重命名,这是一款手机app的重命名工具,使用起来很简单方便,可以批量对文件按照顺序重新编号、增加前缀或修改后缀等,但是功能相对单一,主要使用在给文件添加前缀上;
二是通过js脚本插件工具对百度网盘批量重命名,功能强大,可批量增加前缀、后缀、修改拓展名、替换名称等以及支持正则替换文件,非常好用,但是也存在一些问题,在进行正则替换或修改的时候,个别正则替换有时不能替换成功,经过检查的正则表达式也无错误。具体的用法见百度网盘如何批量重命名,修改文件名、通过正则方式替换文件、文件夹名称的方法,大家可以试试。
三是通过老毛子的软件进行替换,软件功能和ES浏览器差不多,可视化的显示文件名称替换前后的修改情况,也比较好用,但功能稍弱了一点,同时有时不能替换成功,总体还是蛮好用的,百度网盘批量重命名正则替换修改文件名称前缀后缀添加序号百度云软件工具。
四是今天要介绍的通过百度网盘api进行替换,支持强大的正则替换,支持根据关键词搜索后进行替换,好用得不要不要的。特别说一下的是通过关键词搜索后替换,这样就不用局限在对一个文件夹内的文件名称进行替换,而是可以修改替换网盘内的所有需要修改的文件名称。但有个问题是需要会懂点python基础知识,使用起来不是太直观。因此,下面开始详细对其进行讲解。
二、使用到的环境及工具
还是Windows10 64位的操作系统,python3.6的版本,pycharm的编辑器,安装上baidupcsapi库。这些基本的请自行配置,若有不懂的或需要一些学习的视频教程可以Q我或留言。
三、具体使用步骤
首先,引入相应的模块,包括正则re,并登录百度网盘
from baidupcsapi import PCS import re pcs = PCS("用户名","密码")
其次,登录后根据关键词查找网盘内的文件,如:网盘内有文件的名称前面加了一个网址“blog.az009.com”想把它们除去。那么,先通过pcs的search函数找出文件的列表。
keyword = "blog.az009.com" path = '/' searchlist = pcs.search(path, keyword).json().get('list')
再次,找到含关键词的文件列表后对searchlist进行遍历,并生成下一步文件重命名函数需要的参数格式。
renamelist = [] newname = '' for searchfile in searchlist: fsid = searchfile.get('fs_id') fspath = searchfile.get('path') fsname = searchfile.get('server_filename') pattern = re.compile('blog.az009.com') newname = re.sub(pattern, '', fsname)#查找含blog.az009.com的关键词并替换为空 renamelist.append((fspath, newname))#生成含文件全路径的文件及新文件名称的元祖组成的列表 print(fsname, newname)#比对修改文件前后的差异,是否修改或替换正确
最后,调用pcs的rename函数修改网盘内文件的名称。
if input("若符合修改的预期,请输入 y 以便继续执行文件名替换") == "y": pcs.rename(renamelist)
使用中需要注意的事项有几个:1.若需要修改替换的文件名称有上千个则需要多次进行重复,或继续优化代码;2.rename的参数需要是列表,且里面的元素需要是二元的元祖,元祖里面第一个元素是文件的全路径,第二元素只需要是新名称。
四、完整源码
出软件版了,百度网盘批量处理大师 地址 http://blog.az009.com/15472.html
#-*-coding:utf-8-*- from baidupcsapi import PCS import re pcs = PCS("用户名","密码") keyword = "blog.az009.com" path = '/' searchlist = pcs.search(path, keyword).json().get('list') renamelist = [] newname = '' for searchfile in searchlist: fsid = searchfile.get('fs_id') fspath = searchfile.get('path') fsname = searchfile.get('server_filename') pattern = re.compile(‘blog.az009.com’) newname = re.sub(pattern, '', fsname) renamelist.append((fspath, newname)) print(fsname, newname)if input("若符合修改的预期,请输入 y 以便继续执行文件名替换") == "y": pcs.rename(renamelist)