python 获取目录视频时长,大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #!/usr/bin/python # -*- coding:utf-8 -*- import os import sys import re import xlwt import csv from moviepy.editor import * #from moviepy.editor import VideoFileClip file_dir = "/ftpdir/data1/" #定义文件目录 workbook = xlwt.Workbook(encoding = 'utf-8' ) worksheet = workbook.add_sheet( 'Worksheet' ) 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: a = str (size / G) a = str ( int (a.split( '.' )[ 0 ])) return a + 'G Bytes' #return str(size/G)+'G Bytes' elif size > = M: a = str (size / M) a = str (( int (a.split( '.' )[ 0 ]) + 1 )) return a + '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 #当前路径下所有非目录子文件 ds = list (os.walk(file_dir)) list_a = [] with open ( './data_duration.csv' , 'a' ,encoding = 'utf-8' ) as f: for root,dirs,files in ds: for file in files: file_path = '{}/{}' . format (root, file ) if re.match( '/ftpdir/data1/.*/(\d+)(.ts|.mp4)' ,file_path): a = self .get_file_times(file_path) b = self .get_filesize(file_path) f.write( '{}-----{}-----{}\n' . format (file_path,a,b)) obj = FileCheck() obj_a = obj.get_all_file() print (obj_a) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?