您好,登錄后才能下訂單哦!
這篇文章給大家介紹利用python怎么實(shí)現(xiàn)百度網(wǎng)盤非會員上傳超過500個文件,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
os.walk()函數(shù),可以樹形遍歷整個路徑下的文件夾列表和文件列表
Path(路徑).parent屬性,可以獲取該“路徑”的父路徑
os.path.relpath("D:\aaa\bbb\ccc",start="D:\aaa")函數(shù),可以返回“bbb\ccc”字符串, 實(shí)現(xiàn)路徑裁剪。
os.sep 可以代表任何路徑分隔符
os.rename()函數(shù),可以實(shí)現(xiàn)移動功能
sys.argv[1] 通過接收“待分割的路徑”參數(shù)的輸入
# python3.8 # coding=utf-8 import os import sys from pathlib import Path class BaiduPanCutter(object): '''百度網(wǎng)盤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為倍數(shù),這是1倍 # 將文件路徑(摒棄當(dāng)前路徑)轉(zhuǎn)成字符串,用_隔開 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("非文件夾,運(yùn)行方法:python %s 路徑文件夾" % sys.argv[0]) except IndexError: print("未輸入待分割的路徑文件夾, 運(yùn)行方法:python %s 路徑文件夾" % sys.argv[0]) os.system("pause")
運(yùn)行方式:將以上代碼命名為:baidu_pan_500_cutter.py
通過命令:python baidu_pan_500_cutter.py D:\DCIM\Photos 運(yùn)行
每個文件夾都不會超過500個文件,后續(xù)將一個一個的文件夾拖入百度網(wǎng)盤(電腦客戶端)即可了。
本腳本不涉及任何的刪除文件或文件夾的操作,不會出現(xiàn)文件丟失情況。
兼容非英文的文件夾或文件分割操作。
關(guān)于利用python怎么實(shí)現(xiàn)百度網(wǎng)盤非會員上傳超過500個文件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。