python 实现百度网盘非会员上传超过500个文件的方法


Posted in Python onJanuary 07, 2021

案例故事:

百度网盘非会员大量上传文件,会弹出:“上传文件数量超出500个现在,开通超级会员后可继续上传”,其实是限制拖入500张相片,并非限制上传500张。

python 实现百度网盘非会员上传超过500个文件的方法

非会员如何将众多文件,分割成500一个的文件夹,不受拖入数量限制呢?

准备阶段

  • os.walk()函数,可以树形遍历整个路径下的文件夹列表和文件列表
  • Path(路径).parent属性,可以获取该“路径”的父路径
  • os.path.relpath("D:\aaa\bbb\ccc",start="D:\aaa")函数,可以返回“bbb\ccc”字符串, 实现路径裁剪。
  • os.sep 可以代表任何路径分隔符
  • os.rename()函数,可以实现移动功能
  • sys.argv[1] 通过接收“待分割的路径”参数的输入

Python面向对象类形式

# python3.8
# coding=utf-8
 
import os
import sys
from pathlib import Path
 
 
class BaiduPanCutter(object):
  '''百度网盘500个文件分割器'''
 
  def __init__(self, root_path, count=500):
    self.root_path = root_path
    self.count = count
    self.folder_file_dict = {} # 文件夹与其文件列表的映射字典
    self.get_folders_files() # 获取该根路径下的所有文件夹列表和文件列表
 
  def get_folders_files(self):
    '''获取该根路径下的所有文件夹列表和文件列表'''
    for folders, _, files in os.walk(self.root_path):
      self.folder_file_dict[folders] = files
 
  def _split(self, arr, count):
    '''分割文件列表,每500算一份'''
    arrs = []
    while len(arr) > count:
      piece = arr[:count]
      arrs.append(piece)
      arr = arr[count:]
    arrs.append(arr)
    return arrs
 
  # 分割文件并放到新的文件去
  def cut_file(self):
    '''分割并移动到新的文件夹'''
    for each_folder in self.folder_file_dict.keys():
      num = 1 # 以500为倍数,这是1倍
 
      # 将文件路径(摒弃当前路径)转成字符串,用_隔开
      temp_path = os.path.relpath(each_folder, Path(self.root_path).parent)
      temp_path = temp_path.replace(os.sep, "_")
      print(temp_path)
 
      files_list = self.folder_file_dict[each_folder]
      file_group = self._split(files_list, self.count) # 按500来分割
 
      if len(file_group) > 1: # 有超过500个的文件列表
        for each_group in file_group: # 遍历每500份的文件列表
          new_folder = os.path.join(self.root_path, temp_path + "_" + str(num)) # 新路径
          if not os.path.exists(new_folder):
            os.mkdir(new_folder)
          for each_file in each_group:
            old_file = os.path.join(each_folder, each_file)
            new_file = os.path.join(new_folder, each_file)
            print("正在将%s 移动到 %s" % (old_file, new_file))
            os.rename(old_file, new_file)
          num = num + 1
      else: # 无超过500个的文件列表
        new_folder = os.path.join(self.root_path, temp_path) # 新路径
        if not os.path.exists(new_folder):
          os.mkdir(new_folder)
        for each_file in file_group[0]: #
          old_file = os.path.join(each_folder, each_file)
          new_file = os.path.join(new_folder, each_file)
          print("正在将%s 移动到 %s" % (old_file, new_file))
          os.rename(old_file, new_file)
 
 
if __name__ == '__main__':
  try:
    arg1 = sys.argv[1]
    if os.path.isdir(arg1):
      b_obj = BaiduPanCutter(arg1, 500)
      b_obj.cut_file()
    else:
      print("非文件夹,运行方法:python %s 路径文件夹" % sys.argv[0])
  except IndexError:
    print("未输入待分割的路径文件夹, 运行方法:python %s 路径文件夹" % sys.argv[0])
  os.system("pause")

运行方式与效果

运行方式:将以上代码命名为:baidu_pan_500_cutter.py
通过命令:python baidu_pan_500_cutter.py D:\DCIM\Photos 运行

python 实现百度网盘非会员上传超过500个文件的方法

每个文件夹都不会超过500个文件,后续将一个一个的文件夹拖入百度网盘(电脑客户端)即可了。

备注信息

  • 本脚本不涉及任何的删除文件或文件夹的操作,不会出现文件丢失情况。
  • 兼容非英文的文件夹或文件分割操作。

以上就是python 实现百度网盘非会员上传超过500个文件的详细内容,更多关于python 百度网盘上传超过500个文件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python下函数参数的传递(参数带星号的说明)
Sep 19 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
Python随机生成数模块random使用实例
Apr 13 Python
Python合并字符串的3种方法
May 21 Python
python字符串的常用操作方法小结
May 21 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
python 字符串追加实例
Jul 20 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
python playwright 自动等待和断言详解
Nov 27 Python
python中urllib包的网络请求教程
Apr 19 Python
Django权限控制的使用
Jan 07 #Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
Jan 07 #Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 #Python
jupyter notebook更换皮肤主题的实现
Jan 07 #Python
基于 Python 实践感知器分类算法
Jan 07 #Python
如何编写python的daemon程序
Jan 07 #Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
Jan 07 #Python
You might like
处理php自动反斜杠的函数代码
2010/01/05 PHP
php生成略缩图代码
2012/07/16 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
python中map、any、all函数用法分析
2015/04/21 Python
python数据结构之图的实现方法
2015/07/08 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
总经理助理的八要求
2013/11/12 职场文书
有关爱国演讲稿
2014/05/07 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
python简单验证码识别的实现过程
2021/06/20 Python
JS实现简单九宫格抽奖
2022/06/28 Javascript