这篇文章给大家介绍利用python怎么实现百度网盘非会员上传超过500个文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
os.walk()函数,可以树形遍历整个路径下的文件夹列表和文件列表
Path(路径).parent属性,可以获取该“路径”的父路径
os.path.relpath("D:\aaa\bbb\ccc",start="D:\aaa")函数,可以返回“bbb\ccc”字符串, 实现路径裁剪。
os.sep 可以代表任何路径分隔符
os.rename()函数,可以实现移动功能
sys.argv[1] 通过接收“待分割的路径”参数的输入
# 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个文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。