import os import shutil from moviepy.editor import VideoFileClip # 獲取所有檔案 def getAllFiles(fire_dir,houzui=".mp4"): filepath_list = [] for root,folder_names,file_names in os.walk(fire_dir): for file_name in file_names: file_path = root+os.sep+file_name if file_path.endswith(houzui): #判斷檔案是否以指定字尾結尾 filepath_list.append(file_path) print(file_path) print(filepath_list) return filepath_list #獲取指定資料夾下所有MP4檔案的時長 def getFileNames(path,houzui=".mp4"): return [os.path.join(path,f) for f in os.listdir(path) if f.endswith(houzui)] #獲取影片時長 def getTimeLong(videoFile): clip = VideoFileClip(videoFile) sicahng = clip.duration print(sicahng) # seconds clip.close() return sicahng #獲取影片解析度 def getKuanAndGao(videoFile): clip = VideoFileClip(videoFile) fenbianlv = clip.size # 獲取解析度 print(fenbianlv) clip.close() return fenbianlv #如果不存在就建立 def createDir(file_dir): # 如果不存在資料夾,就建立 if not os.path.isdir(file_dir): os.mkdir(file_dir) #移動檔案到指定資料夾下的yiqiege目錄 def moveFile(zhidingmulu,file_path): # # 將已經切割的移動到已經切割資料夾gen_dir # zhumulu = str(gen_dir).strip(gen_dir.split("\\")[-1]) # # 建立資料夾 # qiegewenjianjia = r"%s\yiqiege" % zhumulu # print("切割資料夾名字:") # print(qiegewenjianjia) # createDir(qiegewenjianjia) try: # 移動檔案到資料夾目錄中 shutil.move(file_path, zhidingmulu) print("移動檔案%s到已切割資料夾" % file_path) except Exception as e: print("移動出錯:%s" % str(e)) #獲取指定路徑下MP4檔案的時長 def mp4FIleTime(path,houzui=".mp4"): file_list = getFileNames(path,houzui) for one in file_list: try: one_shichang = getTimeLong(one) print("%s檔案的時長為 %s 秒"%(one,one_shichang)) zhengshu = int(one_shichang) zhengshijia1 = zhengshu+1 #移動到指定時間的資料夾 xiaoyu1miao = "%s/大於%s秒小於%s秒"% (path,str(zhengshu),str(zhengshijia1)) createDir(file_dir=xiaoyu1miao) moveFile(zhidingmulu=xiaoyu1miao, file_path=one) except Exception as e: print("%s檔案的時長失敗,原因:%s"%(one,str(e))) #移動到指定時間的資料夾 jieshishibai = "%s/解析失敗"% path createDir(file_dir=jieshishibai) moveFile(zhidingmulu=jieshishibai, file_path=one) continue #獲取指定路徑下MP4檔案的解析度 def mp4FIleFenBianLv(path,houzui=".mp4"): file_list = getAllFiles(path,houzui) for one in file_list: try: one_fenbianlv = getKuanAndGao(one) print("%s檔案的解析度為 %s "%(one,one_fenbianlv)) #移動到指定時間的資料夾 xiaoyu1miao = "%s/%sx%s"% (path,one_fenbianlv[0],one_fenbianlv[1]) createDir(file_dir=xiaoyu1miao) moveFile(zhidingmulu=xiaoyu1miao, file_path=one) except Exception as e: print("%s檔案的解析度失敗,原因:%s"%(one,str(e))) #移動到指定時間的資料夾 jieshishibai = "%s/解析失敗"% path createDir(file_dir=jieshishibai) moveFile(zhidingmulu=jieshishibai, file_path=one) continue if __name__ == '__main__': filePath =r"F:\BaiduNetdiskDownload" mp4FIleFenBianLv(path=filePath,houzui=".mp4")