开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 174|回复: 9
收起左侧

[已解决] 求助大哥 文件内删除指定文件的操作

 关闭 [复制链接]
结帖率:98% (62/63)
发表于 2025-4-19 16:11:52 | 显示全部楼层 |阅读模式   广东省深圳市
12精币
各位大佬好,请问下大家,一个文件内,我都很多的视频文件,是mp4格式的,然后视频的时长有10s到2分钟多的都有,我现在想删除这个文件夹内视频时长小于30秒的视频,低于30s的视频都删掉,30s以上的视频就保留,请问下大哥们这个应该怎么弄呢?


文件像下面截图这样的:
30s.png

最佳答案

查看完整内容

自行调试

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (12/12)

签到天数: 10 天

发表于 2025-4-19 16:11:53 | 显示全部楼层   江苏省盐城市
自行调试
demo.e (846.32 KB, 下载次数: 6)

评分

参与人数 2好评 +1 精币 +2 荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!
longdaqing + 1 + 2 YYDS~!

查看全部评分

回复

使用道具 举报

结帖率:100% (12/12)

签到天数: 10 天

发表于 2025-4-19 16:47:11 | 显示全部楼层   江苏省盐城市
有问题么
回复

使用道具 举报

结帖率:77% (59/77)
发表于 2025-4-19 17:54:04 | 显示全部楼层   河南省信阳市
批量多线程处理 需要+QQ 23582530 收费的
回复

使用道具 举报

结帖率:77% (59/77)
发表于 2025-4-19 17:54:27 | 显示全部楼层   河南省信阳市
+23582530  
回复

使用道具 举报

结帖率:83% (10/12)
发表于 2025-4-19 18:28:16 | 显示全部楼层   江苏省苏州市
先枚举出文件数组   然后循环读取MP4的时长判断删除
回复

使用道具 举报

发表于 2025-4-19 18:45:27 | 显示全部楼层   江苏省*
很多方法可以实现
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2025-4-19 20:15:12 | 显示全部楼层   山西省太原市
[Python] 纯文本查看 复制代码
import os
from moviepy.editor import VideoFileClip

def delete_short_videos(folder_path, min_duration=30):
    """
    删除文件夹中时长小于min_duration秒的MP4视频
    
    参数:
        folder_path (str): 要处理的文件夹路径
        min_duration (int): 最小保留时长(秒),默认为30秒
    """
    deleted_count = 0
    kept_count = 0
    
    for filename in os.listdir(folder_path):
        if filename.lower().endswith('.mp4'):
            filepath = os.path.join(folder_path, filename)
            
            try:
                # 获取视频时长
                with VideoFileClip(filepath) as video:
                    duration = video.duration
                
                # 判断并删除
                if duration < min_duration:
                    os.remove(filepath)
                    print(f"已删除: {filename} (时长: {duration:.2f}秒)")
                    deleted_count += 1
                else:
                    print(f"保留: {filename} (时长: {duration:.2f}秒)")
                    kept_count += 1
                    
            except Exception as e:
                print(f"处理文件 {filename} 时出错: {str(e)}")
    
    print(f"\n处理完成: 删除了 {deleted_count} 个文件, 保留了 {kept_count} 个文件")

# 使用示例
folder_path = input("请输入要处理的文件夹路径: ")
delete_short_videos(folder_path)
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2025-4-19 20:15:30 | 显示全部楼层   山西省太原市
[Python] 纯文本查看 复制代码
import os
import subprocess

def get_video_duration_ffprobe(filepath):
    """使用ffprobe获取视频时长(秒)"""
    cmd = [
        'ffprobe', '-v', 'error', '-show_entries', 
        'format=duration', '-of', 
        'default=noprint_wrappers=1:nokey=1', filepath
    ]
    try:
        output = subprocess.check_output(cmd).decode('utf-8').strip()
        return float(output)
    except:
        return None

def delete_short_videos_ffprobe(folder_path, min_duration=30):
    """
    使用ffprobe删除短视频
    
    参数:
        folder_path (str): 要处理的文件夹路径
        min_duration (int): 最小保留时长(秒),默认为30秒
    """
    deleted_count = 0
    kept_count = 0
    
    for filename in os.listdir(folder_path):
        if filename.lower().endswith('.mp4'):
            filepath = os.path.join(folder_path, filename)
            duration = get_video_duration_ffprobe(filepath)
            
            if duration is None:
                print(f"无法获取 {filename} 的时长,跳过")
                continue
                
            if duration < min_duration:
                os.remove(filepath)
                print(f"已删除: {filename} (时长: {duration:.2f}秒)")
                deleted_count += 1
            else:
                print(f"保留: {filename} (时长: {duration:.2f}秒)")
                kept_count += 1
    
    print(f"\n处理完成: 删除了 {deleted_count} 个文件, 保留了 {kept_count} 个文件")

# 使用示例
folder_path = input("请输入要处理的文件夹路径: ")
delete_short_videos_ffprobe(folder_path)
回复

使用道具 举报

结帖率:78% (18/23)
发表于 2025-4-19 22:24:53 | 显示全部楼层   浙江省嘉兴市
  
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
all_mp4文本型0
i  
cmd文本型 
time_整数型 
' ffprobe.exe 有68MB,太大了,请自行下载到   mp4目录  下
文件_枚举 (“d:\mp4目录”, “*.mp4”, all_mp4, 真, , )
变量循环首 (取数组成员数 (all_mp4), 1, -1, i)
cmd = “d:\mp4目录\ffprobe.exe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ” + all_mp4 [i]
time_ = 到整数 (系统_取DOS执行结果 (cmd, ))
如果真 (time_ < 30)
调试输出 (time_, “删除”)

变量循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表