在你提供的代码中,manage_assets
函数实现了素材管理功能,它通过遍历指定文件夹路径,将不同格式的文件分类为视频、图片和音频素材。以下是该函数的详细解释:
def manage_assets(folder_path):
video_files = []
image_files = []
audio_files = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(('.mp4', '.avi', '.mkv')):
video_files.append(os.path.join(root, file))
elif file.endswith(('.jpg', '.png', '.jpeg')):
image_files.append(os.path.join(root, file))
elif file.endswith(('.mp3', '.wav')):
audio_files.append(os.path.join(root, file))
return {
'视频素材': video_files,
'图片素材': image_files,
'音频素材': audio_files
}
- 初始化空列表:
video_files = []
:用于存储视频文件路径。image_files = []
:用于存储图片文件路径。audio_files = []
:用于存储音频文件路径。
- 遍历文件夹:
for root, dirs, files in os.walk(folder_path):
:使用os.walk
函数遍历folder_path
指定的文件夹及其子文件夹。root
表示当前遍历到的文件夹路径,dirs
是该文件夹下的子文件夹列表,files
是该文件夹下的文件列表。
- 文件分类:
if file.endswith(('.mp4', '.avi', '.mkv')):
:检查文件扩展名是否为.mp4
、.avi
或.mkv
,如果是,则将文件路径添加到video_files
列表中。elif file.endswith(('.jpg', '.png', '.jpeg')):
:检查文件扩展名是否为.jpg
、.png
或.jpeg
,如果是,则将文件路径添加到image_files
列表中。elif file.endswith(('.mp3', '.wav')):
:检查文件扩展名是否为.mp3
或.wav
,如果是,则将文件路径添加到audio_files
列表中。
- 返回结果:
- 最后,将分类好的文件路径以字典形式返回,键分别为
'视频素材'
、'图片素材'
和'音频素材'
,对应的值为相应的文件路径列表。
- 最后,将分类好的文件路径以字典形式返回,键分别为
如果要进一步扩展该功能,比如添加对素材的描述信息、根据文件创建时间或大小进行排序等,可以参考以下示例代码:
python
import os
from datetime import datetime
def manage_assets_extended(folder_path):
video_files = []
image_files = []
audio_files = []
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
creation_time = datetime.fromtimestamp(os.path.getctime(file_path))
file_info = {
'路径': file_path,
'大小': file_size,
'创建时间': creation_time
}
if file.endswith(('.mp4', '.avi', '.mkv')):
video_files.append(file_info)
elif file.endswith(('.jpg', '.png', '.jpeg')):
image_files.append(file_info)
elif file.endswith(('.mp3', '.wav')):
audio_files.append(file_info)
return {
'视频素材': video_files,
'图片素材': image_files,
'音频素材': audio_files
}
在这个扩展版本中,每个文件的信息被封装成一个字典,包含文件路径、大小和创建时间。你可以根据实际需求进一步调整和完善,例如添加对素材的标签功能,或者将素材信息存储到数据库中以便更高效地管理。