win11主机上展示iphone手机拍摄的livp格式的图片

部署运行你感兴趣的模型镜像

整体思路

1.将文件夹中的livp格式重命名为zip格式的文件

2.解压zip格式的文件到本地。从而能得到jpeg格式的文件。

随机解压一个文件后,查看转换后的内容

完美,已经能正常打开。

展示完整的方式

实操

编写py后缀的python代码,先测试下

import os

def rename_files(directory_path):
    if not os.path.exists(directory_path):
        print(f"目录 '{directory_path}' 不存在")
        return
    
    files = os.listdir(directory_path)

    for file_name in files:
        if file_name.endswith(".livp"):
            new_file_name = os.path.join(directory_path, file_name[:-5]+".zip")
            old_file_path = os.path.join(directory_path, file_name)
            os.rename(old_file_path, new_file_name)
            print(f"已将文件 '{file_name}' 重命名为 '{new_file_name}'.")

directory_path="D:\\BaiduNetdiskDownload\\天津"

rename_files(directory_path)

运行代码

嗯,是的,中文展示还需要再调,我也就没太在意了。

修改下脚本,新增编码格式。这样就能显示出中文

继续调整,将zip解压到当前文件夹中,并删除.mov格式的文件,只保留图片。

查看文件

优化的地方,将压缩的zip文件也一并删除

同时将livp转过去的照片格式,前面的JPG也去掉,就更适合自己使用了。

这才是最后想要的结果吧

展示未优化的完整代码

import os
import sys
import io
import zipfile
import glob

#设置编码格式为utf-8
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

def rename_files(directory_path):
    #检查目录是否存在
    if not os.path.exists(directory_path):
        print(f"目录 '{directory_path}' 不存在")
        return
    
    #获取目录下的所有文件
    files = os.listdir(directory_path)

    for file_name in files:
        #只处理目录下livp结尾的文件
        if file_name.endswith(".livp"):
            #构建新的文件名,将.livp替换为.zip
            new_file_name = os.path.join(directory_path, file_name[:-5]+".zip")
            #原文件的完整路径
            old_file_path = os.path.join(directory_path, file_name)
            #重命名文件
            os.rename(old_file_path, new_file_name)
            print(f"已将文件 '{file_name}' 重命名为 '{new_file_name}'.")

def rename_files_jpg(directory_path):
    #检查目录是否存在
    if not os.path.exists(directory_path):
        print(f"目录 '{directory_path}' 不存在")
        return
    
    #获取目录下的所有文件
    files = os.listdir(directory_path)

    for file_name in files:
        #只处理目录下livp结尾的文件
        if file_name.endswith(".jpeg"):
            #构建新的文件名,将.livp替换为.zip
            new_file_name = os.path.join(directory_path, file_name[:-9]+".jpg")
            #原文件的完整路径
            old_file_path = os.path.join(directory_path, file_name)
            #重命名文件
            os.rename(old_file_path, new_file_name)
            print(f"已将文件 '{file_name}' 重命名为 '{new_file_name}'.")

def unzip_zip(target_path):
    #检查目录是否存在
    if not os.path.exists(target_path):
        print(f"目录 '{target_path}' 不存在")
        return
    #切换到目标目录下
    os.chdir(target_path)
    print(f"正在处理的目录:{os.getcwd()}")

    #解压所有的zip文件
    zip_files = glob.glob("*.zip")
    if not zip_files:
        print(f"未找到.zip文件")
        return    
    else:
        for zip_path in zip_files:
            try:
                with zipfile.ZipFile(zip_path, 'r') as zip_ref:
                    #解压到当前目录
                    zip_ref.extractall()
                print(f"已解压:{zip_path}")
            except zipfile.BadZipFile:
                print(f"错误:{zip_path} 不是有效的zip文件")
            except Exception as e:
                print(f"解压{zip_path}时出错:{e}")

    #删除所有的mov文件
    print(f"\n开始删除.mov文件。。。。")
    mov_files = glob.glob("*.mov")
    if not mov_files:
        print(f"未找到.mov文件")
        return
    else:
        for mov_file in mov_files:
            try:
                os.remove(mov_file)
                print(f"已删除{mov_file}")
            except Exception as e:
                print(f'删除{mov_file}时出错:{e}');
    print(f"\n任务已完成")


def delete_file(target_path):
    #检查目录是否存在
    if not os.path.exists(target_path):
        print(f"目录 '{target_path}' 不存在")
        return
    #切换到目标目录下
    os.chdir(target_path)
    print(f"正在处理的目录:{os.getcwd()}")

    #删除所有的mov文件
    print(f"\n开始删除.zip文件。。。。")
    zip_files = glob.glob("*.zip")
    if not zip_files:
        print(f"未找到.zip文件")
        return
    else:
        for zip_file in zip_files:
            try:
                os.remove(zip_file)
                print(f"已删除{zip_file}")
            except Exception as e:
                print(f'删除{zip_file}时出错:{e}');
    print(f"\n任务已完成")


directory_path=r"D:\\BaiduNetdiskDownload\\天津"
target_path=r"D:\\BaiduNetdiskDownload\\天津"

#rename_files(directory_path)
#unzip_zip(target_path)
#delete_file(target_path)
rename_files_jpg(directory_path)

修改优化后的完整代码

import os,sys,io,zipfile,glob

# 解决 Windows 控制台中文乱码
try:
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
    sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
except Exception:
    pass


def ensure_directory(path):
    """
    检查并切换到目标目录
    :param path: 目录路径
    :return: bool 是否成功
    """
    if not os.path.exists(path):
        print(f"❌ 目录不存在: {path}")
        return False
    if not os.path.isdir(path):
        print(f"❌ 路径不是目录: {path}")
        return False
    try:
        os.chdir(path)
        print(f"📁 切换到目录: {os.getcwd()}")
        return True
    except Exception as e:
        print(f"❌ 无法切换到目录 '{path}': {e}")
        return False


def rename_files_by_extension(directory, old_ext, new_ext):
    """
    将指定扩展名的文件重命名为新扩展名
    """
    print(f"\n🔄 重命名 '{old_ext}' → '{new_ext}' ...")
    if not ensure_directory(directory):
        return

    files = glob.glob(f"*{old_ext}")
    if not files:
        print(f"🔍 未找到 '{old_ext}' 文件。")
        return

    renamed_count = 0
    for file_name in files:
        new_name = file_name[:-len(old_ext)] + new_ext
        try:
            os.rename(file_name, new_name)
            print(f"✅ 重命名: {file_name} → {new_name}")
            renamed_count += 1
        except FileExistsError:
            print(f"❌ 跳过: {new_name} 已存在")
        except Exception as e:
            print(f"❌ 失败: {file_name} -> {e}")

    print(f"✅ 成功重命名 {renamed_count} 个文件。")


def delete_files_by_extension(directory, extensions):
    """
    ✅ 统一删除函数:删除目录中匹配任意扩展名的文件
    :param directory: 目标目录
    :param extensions: 扩展名列表,如 ['.zip', '.mov', '.tmp']
    :return: 删除的文件总数
    """
    print(f"\n🗑️ 正在删除文件: {', '.join(extensions)}")
    if not ensure_directory(directory):
        return 0

    deleted_count = 0
    for ext in extensions:
        # 确保扩展名以点开头
        pattern = f"*{ext}" if ext.startswith('.') else f"*.{ext}"
        files = glob.glob(pattern)
        for file_name in files:
            try:
                os.remove(file_name)
                print(f"✅ 已删除: {file_name}")
                deleted_count += 1
            except Exception as e:
                print(f"❌ 删除失败 {file_name}: {e}")
    print(f"✅ 共删除 {deleted_count} 个文件。")
    return deleted_count  # 返回数量,便于调用方判断


def unzip_all_zips(directory, cleanup_exts=None):
    """
    解压所有 .zip 文件,并可选择性清理指定类型的文件
    :param directory: 目标目录
    :param cleanup_exts: 解压后要删除的扩展名列表,如 ['.mov']
    """
    print(f"\n📦 正在解压 ZIP 文件...")
    if not ensure_directory(directory):
        return

    zip_files = glob.glob("*.zip")
    if not zip_files:
        print("🔍 未找到 .zip 文件。")
        return

    extracted_count = 0
    for zip_file in zip_files:
        try:
            with zipfile.ZipFile(zip_file, 'r') as zf:
                zf.extractall()
            print(f"✅ 已解压: {zip_file}")
            extracted_count += 1
        except zipfile.BadZipFile:
            print(f"❌ 无效 ZIP 文件: {zip_file}")
        except Exception as e:
            print(f"❌ 解压失败 {zip_file}: {e}")

    print(f"✅ 共解压 {extracted_count} 个文件。")

    # ✅ 复用 delete_files_by_extension
    if cleanup_exts:
        print(f"\n🧹 开始清理临时文件...")
        delete_files_by_extension(directory, cleanup_exts)



if __name__ == "__main__":
    target_dir = r"D:\BaiduNetdiskDownload\天津"

    # 1. .livp → .zip
    rename_files_by_extension(target_dir, ".livp", ".zip")

    # 2. 解压所有 .zip,并删除 .mov 文件
    unzip_all_zips(target_dir, cleanup_exts=[".mov"])

    # 3. .jpeg → .jpg
    rename_files_by_extension(target_dir, ".jpeg", ".jpg")

    # 4. 单独删除 .zip 文件(例如清理)
    delete_files_by_extension(target_dir, [".zip"])

    # 5. 批量删除多种类型
    # delete_files_by_extension(target_dir, [".tmp", ".log", ".bak"])

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值