2

我想使用zipfile模块从 zip 档案列表中解压缩特定的子文件夹。

档案的路径存储在带有串联子文件夹的 csv 文件中,如下所示:

C:/path_to/archive.zip/y/z/subfolder_a
C:/path_to_a_different/archive.zip/x/subfolder_b
...

我的目标是在保持文件结构的同时仅将这些特定的子文件夹解压缩到另一个位置。这是我想出的。

import zipfile
import os

# List of archive paths with subfolder location
paths = 'C:\\paths.csv'
paths = open(paths, 'r')

for path in paths:
    archive = path.split('.zip')[0] + '.zip'
    path_to_subfolder = path.split('.zip')[1].rstrip('\n')

    # Removes leading slash and replaces backslashes by slashes
    path_to_subfolder = path_to_subfolder.strip('\\').replace('\\','/')

    # Defines name of output folder
    output_folder_name = os.path.split(path_to_subfolder)[-1].rstrip('\n') # subfolder_a, subfolder_b

    # Moves relevant subfolders to output location
    archive = zipfile.ZipFile(archive)
    for file in archive.namelist():
        if file.startswith(path_to_subfolder):
            archive.extract(file, 'C://output//{}'.format(output_folder_name))

运行后的文件夹结构如下:

C:/output/subfolder_a/y/z/subfolder_a/...

但文件夹结构应如下所示:

C:/输出/子文件夹_a/...

我可以改变什么来解决这个问题?

4

0 回答 0