py7zr解压文件时报错CrcError(crc32, f.crc32, f.filename)

报错信息

Traceback (most recent call last):File "/home/hp/project/test/file_util.py", line 130, in extract_archive_7zarchive.extract(targets=[fixed_file], path=output_dir, recursive=True)File "/home/hp/miniconda3/envs/celery/lib/python3.10/site-packages/py7zr/py7zr.py", line 1025, in extractself._extract(path, targets, return_dict=False, recursive=recursive)File "/home/hp/miniconda3/envs/celery/lib/python3.10/site-packages/py7zr/py7zr.py", line 634, in _extractself.worker.extract(File "/home/hp/miniconda3/envs/celery/lib/python3.10/site-packages/py7zr/py7zr.py", line 1266, in extractself.extract_single(File "/home/hp/miniconda3/envs/celery/lib/python3.10/site-packages/py7zr/py7zr.py", line 1354, in extract_singleraise eFile "/home/hp/miniconda3/envs/celery/lib/python3.10/site-packages/py7zr/py7zr.py", line 1351, in extract_singleself._extract_single(fp, files, path, src_end, q, skip_notarget)File "/home/hp/miniconda3/envs/celery/lib/python3.10/site-packages/py7zr/py7zr.py", line 1388, in _extract_singleself._check(fp, just_check, src_end)File "/home/hp/miniconda3/envs/celery/lib/python3.10/site-packages/py7zr/py7zr.py", line 1445, in _checkraise CrcError(crc32, f.crc32, f.filename)
py7zr.exceptions.CrcError: (599713723, 4127376704, 'valid/0001_JPEG.rf.9fcffd546df665288bd059e2975eb307.jpg')

代码如下:

def extract_archive_7z(archive_path: str, output_dir: str = ".", password: str = None):"""解压压缩文件使用 py7zr 解压 7z 格式压缩包,支持中文文件名。"""try:with py7zr.SevenZipFile(archive_path, mode='r', password=password) as archive:# 获取所有文件列表(用于进度条)all_files = archive.getnames()# 创建目标目录(若不存在)os.makedirs(output_dir, exist_ok=True)for file in tqdm(all_files, desc=f"解压 {os.path.basename(archive_path)}", unit="file"):fixed_file = fix_encoding(file)archive.extract(targets=[fixed_file], path=output_dir)logger.info(f"{archive_path} 解压完成")except Exception as e:logger.error(f"解压失败 {archive_path}: {e}", exc_info=True)

错误原因

py7zr 的archive.extract() 方法无法多次被调用

以下是修改后的代码:

def extract_archive_7z(archive_path: str, output_dir: str = ".", password: str = None):"""解压压缩文件使用 py7zr 解压 7z 格式压缩包,支持中文文件名。"""try:with py7zr.SevenZipFile(archive_path, mode='r', password=password) as archive:# 获取所有文件列表(用于进度条)all_files = archive.getnames()# 创建目标目录(若不存在)os.makedirs(output_dir, exist_ok=True)targets = []for file in tqdm(all_files, desc=f"解压 {os.path.basename(archive_path)}", unit="file"):targets = targets.append(file)archive.extract(targets=targets, path=output_dir) # 或使用extractAll()logger.info(f"{archive_path} 解压完成")except Exception as e:logger.error(f"解压失败 {archive_path}: {e}", exc_info=True)

参考:
https://github.com/miurahr/py7zr/issues/313

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物理:由基本粒子组成的个体能否提炼和重组?

个体差异源于基本粒子组合的复杂性与随机性,这一假设若成立,确实可能为生物医学带来革命性突破——但需要突破技术、理论与系统层级的多重壁垒。以下从科学逻辑与技术路径展开分析: 一、随机组合中的共性与稳定结构 1. 自然界的自组织规律 涌现性(Emergence):尽管粒子组…

动态路由EIGRP的配置

动态路由EIGRP的配置 动态路由EIGRP:增强内部网关协议 为何收敛快、不成环? 路由计算的无环路和路由的收敛速度是路由计算的重要指标。EIGRP协议由于使用了DUAL算法,使得EIGRP协议在路由计算中不可能有环路路由产生,同时路由计…

组合问题(多条件)

39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:vector<vector<int>>result;vector<int>path;void backtracking(vector<int>& candidates, int target,int sum,int startIndex){if(sum>target){return;}if(…

SimScape物理建模实例2--带控制的单质量弹簧阻尼系统

模型下载&#xff1a; 基于simscape&#xff0c;单质量系统带位置控制资源-CSDN文库 在实例1中&#xff0c;我们搭建了不带控制的单质量弹簧阻尼系统&#xff0c;该系统没有外界力量介入&#xff0c;只有弹簧的初始弹力&#xff0c;带着弹簧使劲弹来弹去。 SimScape物理建模实…

OpenAI Text 模型与 Chat 模型调用实战指南:从基础配置到创意花店命名

在 AI 应用开发的浪潮中&#xff0c;OpenAI 的大语言模型成为开发者实现创新功能的得力工具。其中&#xff0c;Text 模型和 Chat 模型作为核心接口&#xff0c;被广泛应用于文本生成、对话交互等场景。本文将以 “为花店起名” 为实际需求&#xff0c;手把手教你如何安全调用这…

网页常见水印实现方式

文章目录 1 明水印技术实现1.1 DOM覆盖方案1.2 Canvas动态渲染1.3 CSS伪元素方案2 暗水印技术解析2.1 空域LSB算法2.2 频域傅里叶变换3 防篡改机制设计3.1 MutationObserver防护3.2 Canvas指纹追踪4 前后端实现对比5 攻防博弈深度分析5.1 常见破解手段5.2 进阶防御策略6 选型近…

现代化QML组件开发教程

现代化QML组件开发教程 目录 QML基础介绍QML项目结构基本组件详解自定义组件开发状态与过渡高级主题最佳实践 QML基础介绍 什么是QML QML (Qt Meta Language) 是一种声明式语言&#xff0c;专为用户界面设计而创建。它是Qt框架的一部分&#xff0c;让开发者能够创建流畅、…

C/C++ 程序执行的主要过程

预处理&#xff08;Preprocessing&#xff09; 任务&#xff1a; 处理源代码中以 # 开头的预处理指令&#xff0c;包括&#xff1a; 头文件包含&#xff08;#include&#xff09;&#xff1a;将头文件&#xff08;如 stdio.h&#xff09;的内容直接插入到源文件中。宏替换&…

时间序列预测建模的完整流程以及数据分析【学习记录】

文章目录 1.时间序列建模的完整流程2. 模型选取的和数据集2.1.ARIMA模型2.2.数据集介绍 3.时间序列建模3.1.数据获取3.2.处理数据中的异常值3.2.1.Nan值3.2.2.异常值的检测和处理&#xff08;Z-Score方法&#xff09; 3.3.离散度3.4.Z-Score3.4.1.概述3.4.2.公式3.4.3.Z-Score与…

ValueError: Caught ValueError in DataLoader worker process 0.

参考链接&#xff1a; https://stackoverflow.com/questions/1841565/valueerror-invalid-literal-for-int-with-base-10 它提示我有个地方值错误空字符 果然因为格式处理没有传进去东西&#xff0c;找下原因&#xff0c;让它正常处理 原来是相对路径的.影响了程序运行 将v…

JavaScript性能优化实战,从理论到落地的全面指南

在前端开发领域&#xff0c;JavaScript的性能优化是提升用户体验的核心环节。随着Web应用复杂度的提升&#xff0c;开发者面临的性能瓶颈也日益多样化。本文将从理论分析、代码实践和工具使用三个维度&#xff0c;系统性地讲解JavaScript性能优化的实战技巧&#xff0c;并通过大…

SQL、Oracle 和 SQL Server 的比较与分析

SQL、Oracle 和 SQL Server 的比较与分析 一、基础概念 1. SQL (Structured Query Language) 定义&#xff1a;结构化查询语言&#xff0c;用于管理关系型数据库的标准语言类型&#xff1a; DDL (数据定义语言)&#xff1a;CREATE, ALTER, DROPDML (数据操作语言)&#xff1…

Telnet 类图解析

Telnet 类图&#xff08;文本描述&#xff09; --------------------------------------- | Telnet | --------------------------------------- | - host: str | # 目标主机 | - port: int …

Ansible安装与核心模块实战指南

Ansible安装与核心模块实战指南 自动化运维入门:从安装到模块化任务配置 Ansible作为一款无代理自动化工具,通过模块化设计实现高效管理,尤其适用于快速部署、配置和维护大规模系统。本文将从安装、核心模块使用到实际案例,全面解析其核心功能与最佳实践。 一、Ansible安装…

VLLM推理大模型显存不够后,导致程序引擎崩溃的调优方案尝试

背景介绍 硬件 A800 80G模型 chat-glm4-9b-128K环境 生产正常显存占用情况 glm4 占用32GB 其他显存工占用38GB左右 总共剩余10GB。 问题描述 推理时报错日志&#xff0c;由于内网环境无法拿出日志&#xff0c;与下面的类似。 File "/data/miniconda3_new/envs/vllm-new…

【Nacos】env NACOS_AUTH_IDENTITY_KEY must be set.

【Nacos】env NACOS_AUTH_IDENTITY_KEY must be set. 问题描述 env NACOS_AUTH_IDENTITY_KEY must be set.原因分析 在 .env 文件中设置 Nacos 身份验证相关的所有必要环境变量。 解决方案 添加到 .env 文件中 NACOS_AUTH_IDENTITY_KEYAuthorization NACOS_AUTH_IDENTITY…

C++语法基础(下)

&#xff08;注&#xff1a;在看本文是如果感觉内容有点突兀&#xff0c;请先浏览《C语法基础&#xff08;上&#xff09;》这篇文章帮助更好理解&#xff09; 一.缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参…

力扣Hot100(Java版本)

1. 哈希 1.1 两数之和 题目描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同…

FCB文件疑问+求助:01 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件-作用待详解

疑问求助&#xff1a;01 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件-作用待确认确认详解.md 一、疑惑起因 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件&#xff0c;我可以删除fcb文件么&#xff1f;影响什么&#xff1f;如何打开fcb其内容是啥&#xff1f;直观看删…

【数据结构】——栈和队列OJ

一、有效的括号 题目链接&#xff1a; 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 题目的要求很简单&#xff0c;就是要求我们判断其输入的括号字符串是否是有效的括号&#xff0c;那么我们要如何判断呢&#xff1f; 我们可以这样&#xff0c;我们遍历出传入的…