import os
from moviepy.editor import VideoFileClip
data = os.walk(f'E:\迅雷下载\黑色太阳')
# print(data) # data返回的是一个生成器,<generator object _walk at 0x0000020C754EB6D0>
# v = next(data) # 使用next,返回生成器的值
# print(v) # 输出('E:\\迅雷下载\\黑色太阳', ['韩语中字'], ['黑色太阳.第01集.韩语中字.720p.mp4', '黑色太阳.第02集.韩语中字.720p.mp4',
# # '黑色太阳.第03集.韩语中字.720p.mp4', '黑色太阳.第04集.韩语中字.720p.mp4', '黑色太阳.第05集.韩语中字.720p.mp4',
# # '黑色太阳.第06集.韩语中字.720p.mp4'])
# v11 = next(data) # 继续运行这一生成器,会继续往下走,也即这一文件夹里的子目录
# print(v11) # ('E:\\迅雷下载\\黑色太阳\\韩语中字', [], [])
def count_time():
times = 0
for file_path, subdirectory, file_names in data:
for file_name in file_names:
o_file_path = os.path.join(file_path, file_name)
name = file_name.rsplit('.', 1)[-1]
if name == 'mp4':
clip = VideoFileClip(o_file_path)
times += clip.duration
times = round(times, 2)
return times
print('总计时长', count_time(), '秒') # 总计时长 25270.32 秒
v1 = count_time()
v2 = count_time()
v3 = count_time()
print(v1) # 0
print(v2) # 0
print(v3) # 0
# 由于os.walk(f'E:\迅雷下载\黑色太阳')返回的是一个生成器,因此第二次运行函数的时候,会在上一次基础上继续往下执行,也即向这个文件夹的子目录
# 去执行,子目录是空的,因此最后三个函数运行返回值均为0
# 要想每次运行都生成一个同样的结果,可把函数里的data替换成os.walk(f'E:\迅雷下载\黑色太阳')