Python获取文件目录下视频时长、大小、并写入excle文件

来源:互联网 发布:win10装mac os 双系统 编辑:程序博客网 时间:2024/05/22 07:03
关键词:os moviepy xlwt# -*- coding=utf-8 -*-import osimport sysimport xlwtfrom moviepy.editor import VideoFileClipfile_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"=============完成"

阅读全文
0 0
原创粉丝点击