统计文件夹下音频文件时长
统计音频文件时长
- 功能
- 代码
- 主要分析
- 提取文件的音频时长
- 读取文件夹下的所有文件的绝对路径
写这个主要是为了能更好的安排自己的学习时间,学习视频的时长很难直观的看总和时间,导致安排的时间没有很好的规划。几经之下还是决定写个程序统计视频总时长,以便更好的安排时间。
功能
可以统计该文件夹下所有音频文件的总时长
代码
下载链接:统计音频文件时长
from pymediainfo import MediaInfo
import json
import os# 传入文件的【绝对地址】,返回文件的【时长】
def duration(files_path):media_info = MediaInfo.parse(files_path)data = media_info.to_json() # 转成json格式data = json.loads(data) # 读取json格式# 内容比较多需要细心分析找到自己需要的信息try: # 防止存在其他类型文件data = data.get('tracks')[1].get('other_duration')[3] # 提取到文件时长 00:10:40.807return data[:8] # 秒以下的忽略 00:10:40except:return '00:00:00'# 传入文件夹的【绝对地址】,【列表】形式返回文件夹下的【所有文件的绝对地址】
def root_path(files_path):mp4_path_list = [] # 存放音频文件的绝对地址for root, dirs, files in os.walk(files_path):for f in files: # 添加音频文件的地址到列表中mp4_path_list.append(os.path.join(root, f))return mp4_path_list# 传入存储时间的列表,返回时间总和
def duration_sum(duration_list):# 创建三个列表存放【时,分,秒】hour_list = []minute_list = []second_list = []for duration_ in duration_list:hour_list.append(int(duration_[:2])) # 存储【时】minute_list.append(int(duration_[3:5])) # 存储【分】second_list.append(int(duration_[6:])) # 存储【秒】# 对时间进行叠加second_sum = sum(second_list)second = second_sum % 60minute_sum = sum(minute_list) + int(second_sum / 60)minute = minute_sum % 60hour_sum = sum(hour_list) + int(minute_sum / 60)hour = hour_sum % 60# 输出该文件夹下的音频总时长print(f'文件下的音频总时长为:{hour}小时{minute}分{second}秒')if __name__ == '__main__':file_path = r"E:\计算机网络\2022版"# file_path = r"E:\计算机网络\2022版\第三章数据链路层"path_list = root_path(file_path)duration_list_ = [] # 用于存储文件时长for path in path_list:duration_list_.append(duration(path))duration_sum(duration_list_)
可以统计文件夹下所有音频时长总和
亦可以统计单个文件夹下所有音频时长总和
主要分析
提取文件的音频时长
读取json文件的分析
- 读取到的json会很复杂很长
- 可以先查看json的长度
- 再定位到自己需要的数据(选择相应的json数据)
- 此过程可以留意读取和选取后数据的类型
- 逐步分析即可获取需要的数据
读取文件夹下的所有文件的绝对路径
os.walk() 用法
语法:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
参数
- top – 根目录下的每一个文件夹(包含它自己),
产生3-元组 (dirpath, dirnames, filenames)
【文件夹路径, 文件夹名字, 文件名】。- topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。
- onerror – 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。
- followlinks – 设置为 true,则通过软链接访问目录。
统计文件夹下音频文件时长相关推荐
- Android 播放raw文件夹下音频文件,本地MP3文件播放,播放云端MP3文件,获取MP3文件播放时长
1.复制音频文件到raw文件夹下 2.实例化音频文件 private final MediaPlayer.OnCompletionListener beepListener = new MediaPl ...
- windows 7 下,如何统计某文件夹下 视频总时长
由于项目需要,我需要给系统加权限,这真是一个让人头疼的问题,如果要每个业务方法都加上权限判断逻辑,那真的不敢想象是多么大的工作量,日后有变动的话,我会不会发疯? 所以我必须利用之前学到的AOP编程,在 ...
- Linux下统计当前文件夹下的文件个数、目录个数
这篇文章主要介绍了Linux下统计当前文件夹下的文件个数.目录个数,本文使用ls命令配合管理.grep命令实现统计需求,需要的朋友可以参考下 1) 统计当前文件夹下文件的个数 复制代码 代码如下: l ...
- 【转】【Linux】Linux下统计当前文件夹下的文件个数、目录个数
[转][Linux]Linux下统计当前文件夹下的文件个数.目录个数 统计当前文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l 统计文件夹下目录的 ...
- python 统计文件夹下的文件夹/某类型文件的数目
用代码读取文件时,有时需要统计某文件夹下所有文件的数目,并读取指定数目的文件!我们通常使用python的os模块完成统计工作,具体方法如下: 1.统计某文件夹下的文件夹和文件的总个数( ...
- Linux统计文件夹下的文件数量
统计某文件夹下目录文件的个数,统计文本文件的数量 Linux下有三个命令:ls.grep.wc 通过这三个命令的组合可以统计目录下文件及文件夹的个数.ls常用命令介绍 统计当前目录下文件的个数(不包括 ...
- shell统计当前文件夹下的文件个数、目录个数
shell统计当前文件夹下的文件个数.目录个数 ls -l |grep "^-"|wc -l //统计当前文件夹下文件的个数 ls -l |grep "^d"| ...
- SharePoint 2013创建应用程序时IIS端口文件夹下没文件
最近SharePoint 2007迁移到2013的时候,碰到创建应用程序时IIS端口文件夹下没文件的问题,网上找了大把的原因,终于在这里找到了解决方案: Fix: 1. Open IIS on the ...
- c++语言循环读写文件夹,C++遍历文件夹下所有文件的多种方法
为数不多的好用的代码,遍历文件夹获取所有子文件名,"filespec"可用通配符"*?".注意如果用相对路径的话,获取所有文件名后应再调用SetInitDir将 ...
最新文章
- 裸辞后,从Android转战Web前端的学习以及求职之路
- 【线性规划和网络流24题】
- mysql x64界面配置版下载_MySQL下载安装、配置与使用(win7x64)
- java同名变量在list中添加两次_快速解决List集合add元素,添加多个对象出现重复的问题...
- 字体怎么转换html代码,如何设置下列html代码的字体大小和 font-family 以进行水平转换?_html_开发99编程知识库...
- Laravel 开发环境搭建
- php对象复制,PHP 对象复制 - 对象复制 - phpStudy
- 程序员修炼道路上的“葵花宝典”——博文视点大讲堂42期快乐结束
- Cisco iOS的两种配置文件(思科命令的保存)
- 7.Excel数据分析-员工考勤表
- 仿vista桌面小工具
- 透明网桥自学习转发帧解题记录
- 【BZOJ4199】品酒大会(后缀自动机)
- 文档型数据库MongoDB使用教程
- HEG运行错误:GetBeginAndEndLocs
- 氮化硼修饰导热复合物和碳纤维氮化硼涂层|六方氮化硼修饰石墨化氮化碳复合光催化剂|六方氮化硼(h-BN)修饰玻碳电极(GCE-BN) 氮化物
- 知识点(1):OSI网络模型
- Java实现短信验证码(阿里云短信服务)
- MobileNetv2-SSDLite训练自己的数据集
- C++数据结构之哈希表