Python獲取檔案目錄下視訊時長、大小、並寫入excle檔案
阿新 • • 發佈:2019-01-23
關鍵詞:os moviepy xlwt # -*- coding=utf-8 -*- import os import sys import xlwt from moviepy.editor import VideoFileClip file_dir = u"G:/視訊目錄/" #定義檔案目錄 class FileCheck(): def __init__(self): self.file_dir = file_dir def get_filesize(self,filename): u""" 獲取檔案大小(M: 兆) """ file_byte = os.path.getsize(filename) return self.sizeConvert(file_byte) def get_file_times(self,filename): u""" 獲取視訊時長(s:秒) """ clip = VideoFileClip(filename) file_time = self.timeConvert(clip.duration) return file_time def sizeConvert(self,size):# 單位換算 K, M, G = 1024, 1024**2, 1024**3 if size >= G: return str(size/G)+'G Bytes' elif size >= M: return str(size/M)+'M Bytes' elif size >= K: return str(size/K)+'K Bytes' else: return str(size)+'Bytes' def timeConvert(self,size):# 單位換算 M, H = 60, 60**2 if size < M: return str(size)+u'秒' if size < H: return u'%s分鐘%s秒'%(int(size/M),int(size%M)) else: hour = int(size/H) mine = int(size%H/M) second = int(size%H%M) tim_srt = u'%s小時%s分鐘%s秒'%(hour,mine,second) return tim_srt def get_all_file(self): u""" 獲取視訊下所有的檔案 """ for root, dirs, files in os.walk(file_dir): return files #當前路徑下所有非目錄子檔案 print u"=============開始,檔案較多,請耐心等待..." fc = FileCheck() files = fc.get_all_file() datas = [[u'檔名稱', u'檔案大小', u'視訊時長']]#二維陣列 for f in files: cell = [] file_path = os.path.join(file_dir,f) file_size = fc.get_filesize(file_path) file_times = fc.get_file_times(file_path.encode("gbk")) print u"檔名字:{filename},大小:{filesize},時長:{filetimes}".format(filename=f,filesize=file_size,filetimes=file_times) cell.append(f) cell.append(file_size) cell.append(file_times) datas.append(cell) wb = xlwt.Workbook() #建立工作簿 sheet = wb.add_sheet('data')#sheet的名稱為test #單元格的格式 style = 'pattern: pattern solid, fore_colour yellow; '#背景顏色為黃色 style += 'font: bold on; '#粗體字 style += 'align: horz centre, vert center; '#居中 header_style = xlwt.easyxf(style) row_count = len(datas) col_count = len(datas[0]) for row in range(0, row_count): col_count = len(datas[row]) for col in range(0, col_count): if row == 0:#設定表頭單元格的格式 sheet.write(row, col, datas[row][col], header_style) else: sheet.write(row, col, datas[row][col]) wb.save(file_dir+"video.xlsx") print u"=============完成"