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

 更新时间:2021年01月07日 11:57:44   作者:武散人  
这篇文章主要介绍了python 实现百度网盘非会员上传超过500个文件的方法,帮助大家更好的利用python解决问题,感兴趣的朋友可以了解下

案例故事:

百度网盘非会员大量上传文件,会弹出:“上传文件数量超出500个现在,开通超级会员后可继续上传”,其实是限制拖入500张相片,并非限制上传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 运行

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

备注信息

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

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

相关文章

  • 对python字典元素的添加与修改方法详解

    对python字典元素的添加与修改方法详解

    今天小编就为大家分享一篇对python字典元素的添加与修改方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 详解Python调用华为API实现图像标签

    详解Python调用华为API实现图像标签

    华为云图像标签可识别上千种通用物体以及数百种场景标签,一个图像可包含多个标签内容,语义内容非常丰富。本文将通过Python调用华为API实现图像标签,需要的可以参考一下
    2022-04-04
  • Python中数组遍历的方法总结

    Python中数组遍历的方法总结

    数组是编程中经常使用的数据结构,用于存储和操作一组元素,Python提供了多种方法来遍历数组,本文将深入探讨这些方法,提供详细的示例代码,希望对大家有所帮助
    2023-11-11
  • Python global全局变量函数详解

    Python global全局变量函数详解

    本文详解了global全局变量函数的用法,还有global的作用。global全局变量在一个脚本中全部作用域都可以访问,用法很方便,希望本文对大家有所帮助
    2018-09-09
  • PageFactory设计模式基于python实现

    PageFactory设计模式基于python实现

    这篇文章主要介绍了PageFactory设计模式基于python实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python处理文本文件并生成指定格式的文件

    python处理文本文件并生成指定格式的文件

    本节主要介绍了python如何处理文本文件并生成指定格式的文件,需要的朋友可以参考下
    2014-07-07
  • 对pandas的算术运算和数据对齐实例详解

    对pandas的算术运算和数据对齐实例详解

    今天小编就为大家分享一篇对pandas的算术运算和数据对齐实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python如何进行时间处理

    Python如何进行时间处理

    这篇文章主要介绍了Python如何进行时间处理,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • python爬虫selenium和phantomJs使用方法解析

    python爬虫selenium和phantomJs使用方法解析

    这篇文章主要介绍了python爬虫selenium和phantomJs使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python批量处理打开多个文件

    python批量处理打开多个文件

    这篇文章主要介绍了python批量处理打开多个文件,文章围绕主题的相关内容展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-06-06

最新评论