Python实现删除与.png同名的指定.mov文件
实现方案:删除配对的iPhone实况照片.mov文件
核心逻辑
只删除满足以下条件的.mov文件:
- 与同目录下的同名.png文件成对存在
- 独立的.mov文件(无对应同名.png)保留
方案1:Python 脚本扩展(适配已有清单代码场景)
如果你的现有文件清单代码是Python编写的,可以直接在原有逻辑中嵌入删除判断:
import os def delete_paired_mov(folder_path): # 遍历目标文件夹内所有文件 for filename in os.listdir(folder_path): # 筛选.mov格式文件 if filename.lower().endswith('.mov'): # 生成对应同名.png的路径 base_name = os.path.splitext(filename)[0] png_full_path = os.path.join(folder_path, f"{base_name}.png") # 检查同名.png是否存在,存在则删除当前.mov if os.path.exists(png_full_path): mov_full_path = os.path.join(folder_path, filename) # 测试阶段:先打印待删除文件,确认无误后再启用删除代码 print(f"待删除配对文件:{mov_full_path}") # os.remove(mov_full_path) # 替换为你的目标文件夹路径 target_folder = "/Users/xxx/Photos" delete_paired_mov(target_folder)
关键细节
- 先运行带
print的测试模式,确认待删除列表正确后,再取消os.remove的注释 - 如需处理子文件夹,将
os.listdir替换为os.walk实现递归遍历 - 若系统大小写敏感,可去掉
.lower()实现严格后缀匹配
方案2:终端命令(快速实现,无需编写脚本)
macOS/Linux(Bash)
先运行测试命令确认目标文件,无误后再执行删除:
# 测试模式:列出所有将被删除的.mov文件 find /path/to/your/folder -type f -name "*.mov" -exec sh -c 'png="${0%.mov}.png"; [ -f "$png" ] && echo "$0"' {} \; # 执行删除 find /path/to/your/folder -type f -name "*.mov" -exec sh -c 'png="${0%.mov}.png"; [ -f "$png" ] && rm "$0"' {} \;
Windows(PowerShell)
同样遵循先测试再删除的流程:
# 测试模式:列出待删除文件 Get-ChildItem -Path "C:\Path\To\Your\Folder" -Filter *.mov | ForEach-Object { $pngPath = [System.IO.Path]::ChangeExtension($_.FullName, ".png") if (Test-Path $pngPath) { Write-Host "待删除: $($_.FullName)" } } # 执行删除 Get-ChildItem -Path "C:\Path\To\Your\Folder" -Filter *.mov | ForEach-Object { $pngPath = [System.IO.Path]::ChangeExtension($_.FullName, ".png") if (Test-Path $pngPath) { Remove-Item $_.FullName -Confirm:$false } }
注意事项
- 先测试再删除:无论采用哪种方案,务必先运行测试命令/脚本,确认待删除文件均为配对的实况照片.mov,避免误删重要视频
- 提前备份:操作前建议备份目标文件夹,防止意外情况导致数据丢失
- 权限检查:若出现删除失败,检查目标文件夹的读写权限是否充足
内容的提问来源于stack exchange,提问作者Javi
相关产品推荐
相关产品推荐

