py7zr在不解压7z文件的情况下,将压缩包中的内容提取到新的7z压缩包
时间: 2023-08-11 07:26:21 浏览: 427
可以使用py7zr模块的addall()方法将压缩包中的内容提取到新的7z压缩包中,具体步骤如下:
1. 导入py7zr模块:
```
import py7zr
```
2. 打开原始7z压缩包:
```
with py7zr.SevenZipFile('original.7z', 'r') as archive:
```
3. 创建新的7z压缩包:
```
with py7zr.SevenZipFile('new.7z', 'w') as new_archive:
```
4. 使用addall()方法将原始压缩包中的所有内容添加到新的压缩包中:
```
new_archive.addall(archive)
```
5. 关闭压缩包:
```
archive.close()
new_archive.close()
```
这样,就可以将原始压缩包中的内容提取到新的7z压缩包中,而不需要解压原始压缩包。
相关问题
py7zr 怎么将一个7z压缩文件中符合条件的文件全部提取出来到一个新的7z包
你可以使用 py7zr 库中的 extractall() 方法来提取符合条件的文件到一个新的7z包中。具体步骤如下:
1. 打开原始的7z文件:
```
import py7zr
with py7zr.SevenZipFile('original.7z', mode='r') as z:
# do something with z
```
2. 遍历压缩包中的文件,找到符合条件的文件:
```
with py7zr.SevenZipFile('original.7z', mode='r') as z:
for filename in z.getnames():
# 判断文件是否符合条件,这里以文件名中是否含有特定字符串为例
if 'specific_string' in filename:
# do something with the file
```
3. 创建一个新的7z包:
```
with py7zr.SevenZipFile('new.7z', mode='w') as z:
# do something with z
```
4. 将符合条件的文件添加到新的7z包中:
```
with py7zr.SevenZipFile('original.7z', mode='r') as z1, py7zr.SevenZipFile('new.7z', mode='w') as z2:
for filename in z1.getnames():
# 判断文件是否符合条件,这里以文件名中是否含有特定字符串为例
if 'specific_string' in filename:
# 提取文件并添加到新的7z包中
z2.write(filename, z1.read(filename))
```
5. 关闭打开的7z文件:
```
with py7zr.SevenZipFile('original.7z', mode='r') as z1, py7zr.SevenZipFile('new.7z', mode='w') as z2:
for filename in z1.getnames():
if 'specific_string' in filename:
z2.write(filename, z1.read(filename))
```
完整代码如下:
```
import py7zr
# 打开原始的7z文件
with py7zr.SevenZipFile('original.7z', mode='r') as z1:
# 创建一个新的7z包
with py7zr.SevenZipFile('new.7z', mode='w') as z2:
# 遍历压缩包中的文件,找到符合条件的文件
for filename in z1.getnames():
if 'specific_string' in filename:
# 提取文件并添加到新的7z包中
z2.write(filename, z1.read(filename))
# 关闭打开的7z文件
z1.close()
z2.close()
```
py7zr 解压缩rar显示py7zr.exceptions.Bad7zFile: not a 7z file
Py7zr 是一个 Python 库,用于处理 7-zip 格式的压缩文件(包括 .7z、.zipx 和 .tar.7z 等)。当你尝试使用 Py7zr 解压缩一个文件时,如果遇到 `py7zr.exceptions.Bad7zFile: not a 7z file` 错误,这意味着你提供的文件实际上不是一个有效的 7-zip 格式文件。
可能的原因有:
1. **文件类型错误**:你可能试图解压的文件并不是一个标准的 7-zip 压缩包,可能是其他类型的压缩文件或非压缩文件。
2. **损坏的文件**:文件可能已部分损坏,导致解析器无法识别为 7-zip。
3. **版本兼容性**:如果文件是用较旧或不被 Py7zr 支持的版本创建的,可能会出现此问题。
解决方法包括:
1. **确认文件类型**:检查文件扩展名和内容是否确实对应 7-zip 格式。
2. **文件完整性**:尝试从可靠的源重新获取文件,或者检查下载过程中是否有数据丢失。
3. **更新库**:确保你的 Py7zr 版本与你要解压的文件兼容。如果是库的问题,可以尝试升级到最新版。
如果你遇到这个问题,你可以尝试以下操作:
1. 是否正确选择了文件?
2. 试着用其他支持 7z 文件的工具打开看看是否正常?
3. 更新或安装一个更稳定版本的 py7zr 是否能解决问题?
阅读全文