分类文件
import os
import ctypes
# 获取当前目录下的所有mp4文件
mp4_files = [f for f in os.listdir(".") if f.endswith(".mp4")]
file_count = len(mp4_files)
if file_count == 0:
ctypes.windll.user32.MessageBoxW(None, "当前目录下不存在mp4文件!", "错误", 0x10)
else:
progress = ctypes.windll.windll.kernel32.CreateFileMappingW(-1, None, 0x04, 0, 4, "mp4_progress")
progress_ptr = ctypes.windll.kernel32.MapViewOfFile(progress, 0xF001F, 0, 0, 4)
for index, file in enumerate(mp4_files):
# 获取文件名中“第”或“篇”字前的部分
filename = os.path.splitext(file)[0]
if "第" in filename:
dirname = filename.split("第")[0]
elif "篇" in filename:
dirname = filename.split("篇")[0]
else:
continue
# 新建以dirname为名的文件夹
if not os.path.exists(dirname):
os.mkdir(dirname)
# 将当前文件移动到dirname文件夹
os.rename(file, os.path.join(dirname, file))
# 更新进度条
percentage = (index + 1) * 100 // file_count
ctypes.c_long.from_address(progress_ptr).value = percentage
# 显示提示框
if percentage < 100:
ctypes.windll.user32.MessageBoxW(None, f"当前进度:{percentage}%\n是否完成:否", "提示", 0x40)
else:
ctypes.windll.user32.MessageBoxW(None, f"所有文件已成功分类!", "提示", 0x40)
# 关闭进度条
ctypes.windll.kernel32.UnmapViewOfFile(progress_ptr)
ctypes.windll.kernel32.CloseHandle(progress)
print("分组完成!")
请将以上代码复制到记事本中,保存为分类.py
,放在存放MP4文件的文件夹中。 运行时请确保当前命令行处于该目录下,或者通过cd
命令切换到该目录下,然后执行python 分类.py
即可。 执行过程中会弹出一个进度提示框,显示当前分类进度以及是否完成。如果不存在“第”或“篇”关键字的文件,会被跳过。分类完成后会在当前目录下生成多个文件夹,每个文件夹内包含相应的mp4文件。
提取子文件夹内容
import os
import shutil
# 获取当前python代码文件的目录
path = os.path.dirname(os.path.abspath(__file__))
# 获取当前文件夹路径
current_dir = os.getcwd()
# 获取所有子文件夹路径
folders = [os.path.join(path, f) for f in os.listdir(path) if not '.' in f]
# 定义计数器,用于记录操作进度
count = 0
total = sum([len(os.listdir(f)) for f in folders])
# 遍历所有子文件夹
for fdsrc in folders:
# 获取子文件夹中的所有文件
srcfiles = [os.path.join(fdsrc, f) for f in os.listdir(fdsrc)]
# 遍历子文件夹中的所有文件
for srcf in srcfiles:
# 获取文件名
file_name = os.path.basename(srcf)
# 检查当前文件夹中是否存在同名文件,如果存在则重命名
if os.path.exists(os.path.join(current_dir, file_name)):
file_name = os.path.splitext(file_name)[0] + '_副本' + os.path.splitext(file_name)[1]
# 将文件剪切到当前文件夹下
shutil.move(srcf, os.path.join(current_dir, file_name))
# 更新计数器
count += 1
# 输出操作进度
print(f'已完成 {count}/{total} 个文件的提取')
# 删除所有已经提取文件后存在的空文件夹
for subdir, dirs, files in os.walk(current_dir, topdown=False):
# 删除空文件夹
if not dirs and not files:
os.rmdir(subdir)
# 输出操作完成提示
print('所有文件提取完成!')
这段代码会遍历指定文件夹内的所有视频文件,并按照指定的命名格式重命名它们。如果不存在符合命名规则的视频文件,程序会直接跳过并结束。如果存在符合命名规则的视频文件,程序会将它们重命名为Jellyfin媒体库能够识别的文件名格式,并输出重命名的过程和结果。请注意,为了实现新的过滤条件,我们需要对文件名进行更复杂的解析和过滤,代码会相应地变得更加复杂。
本站所有资源收集自网络,仅供学习使用,如有侵权请联系删除。未经允许不得转载:CDR平面设计软件交流小站 » GPT写代码-提取当前文件夹内子文件夹中所有内容到当前文件夹及当前文件夹按关键字切片分类文件