python3百度云网盘api关键词搜索后批量重命名文件可正则替换

  • 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)
weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:27   其中:访客  17   博主  10

    • avatar 541182238

      很好用,非常感谢

      • avatar 就很符合

        可以

        • avatar 身份

          我洪涝hi哦就国际化

          • avatar 徐霞客

            为啥评论之后刷新了也不能看

            • avatar 2242141433

              求源代码学习一下

                • avatar 爱在灵灵久 Admin

                  @2242141433 嗯 回复即可见,可以批量更改成千上万个文件名称,感觉还蛮简单好用的。

                • avatar 2242141433

                  求源代码一阅

                  • avatar 2394872398

                    看法看得开凡事都发

                    • avatar 定是飞黄天上来

                      亲测可用,666

                      • avatar 空间就好看

                        评论了也看不到,怎么搞的

                        • avatar onefengzi

                          我再评论试一次。。。。。。。。

                          • avatar xsd0315

                            正好急着用呢,但没基础,能发份基础的使用教程吗,谢谢
                            278926337@qq.com

                            • avatar 30939402

                              您好,感谢您的分享。我用您的代码测试,发现登录时要求输入验证码,我打开提示的图片输入后,又提示Verification Code。 是否百度网盘API限制了,这个Verification Code怎么来,谢谢!

                              UsersxxxAppDataLocalTemptmp0vlu22f0.png
                              另一个程序正在使用此文件,进程无法访问。
                              Input verify code > rqtc
                              Verification Code> 5GAPEHuoGd749V2RY89tPjqtgUoOvRNe

                                • avatar 爱在灵灵久 Admin

                                  @30939402 将返回的验证码地址粘贴到浏览器中打开,就会显示图片。然后将图片中的验证码输入进那个终端后回车即可

                                    • avatar 清欢0607

                                      @爱在灵灵久 我的验证码地址返回个这:��һ����������ʹ�ô��ļ��������޷����ʡ�,怎么解决呀

                                        • avatar 爱在灵灵久 Admin

                                          @清欢0607 这个是因为utf-8编码在gbk编码的终端中显示的乱码,意思是文件被占用,可以直接通过浏览器打开上面的图片地址并输入其中的验证码即可

                                        • avatar 清欢949

                                          @爱在灵灵久 现在到了Verification Code这一步,但是后面什么显示都没有,也没有什么图片验证码

                                            • avatar 爱在灵灵久 Admin

                                              @清欢949 在登录的时候会首先出一个图片验证码,输入正确后百度会再将一个验证码发送到绑定的邮箱账号中,打开绑定的邮箱查看验证码后输入即可登录了。登录成功后下次就不会再出现这个问题。

                                                • avatar fannd

                                                  @爱在灵灵久 我的号没有绑定邮箱,也是会这个提示的

                                                  • avatar 爱在灵灵久 Admin

                                                    @fannd 工具是通过接受邮箱验证码来进行验证的,将百度网盘绑定一个邮箱账号即可 第一次登录验证后以后就不需要再邮箱验证了

                                            • avatar 3093

                                              感觉博主分享,我使用该源码去重命名的时候,发现结果不生效。是否还少了哪一步呢?
                                              最后两行我去掉条件判断,直接执行替换的。
                                              print(fsname, newname)
                                              pcs.rename(renamelist)

                                              望解答,谢谢!

                                                • avatar 爱在灵灵久 Admin

                                                  @3093 里面的正则是否是你自己需要匹配替换的呢 pattern = re.compile(‘blog.az009.com’) 比如里面的blog.az009.com根据自己的实际进行替换

                                                • avatar 清欢0607

                                                  想看一看行不行呀