py7zr在不解压7z文件的情况下,将压缩包中的内容提取到新的7z压缩包
时间: 2023-08-11 10:26:21 浏览: 132
可以使用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()
```
将同一目录下不同文件夹下的.7z文件解压到同名的文件夹中的python代码
以下是将同一目录下不同文件夹下的.7z文件解压到同名的文件夹中的Python代码:
```python
import os
import py7zr
# 获取当前目录下的所有文件夹
dir_list = [f for f in os.listdir('.') if os.path.isdir(f)]
for dir_name in dir_list:
# 构造.7z文件路径和解压路径
archive_path = os.path.join(dir_name, dir_name + '.7z')
extract_path = os.path.join(dir_name, dir_name)
# 如果.7z文件存在,则解压到同名文件夹中
if os.path.isfile(archive_path):
with py7zr.SevenZipFile(archive_path, 'r') as archive:
archive.extractall(path=extract_path)
```
上述代码首先获取当前目录下的所有文件夹,然后对每个文件夹进行以下操作:
1. 构造.7z文件路径和解压路径,其中解压路径就是同名文件夹。
2. 判断.7z文件是否存在,如果存在则进行解压操作。
3. 解压完成后,同名文件夹中就会出现解压后的文件和文件夹。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)