跳转至

UNZIP


import pathlib
import sys
import pathlib
import zipfile


def un_zip_file():
    """
    解压多个ZIP文件
    python un_zip.py file1.zip file2.zip file3.zip ...
    解压后生成文件夹 file1 file2 file3 ...
    每个文件夹中就是zip解压后的文件
    """
    zip_files = sys.argv[1:]

    for zip_file in zip_files:
        # 获取 去除掉 .zip 后的名称
        dir_nbame = zip_file[:-4]
        # 用上面的名称当作文件夹的名称
        if not pathlib.Path(dir_nbame).is_dir():
            pathlib.Path(dir_nbame).mkdir()

        with zipfile.ZipFile(zip_file, "r") as f:
            file_list = f.namelist()
            print(f'压缩文件 {zip_file} 一共有 {len(file_list)} 个: ')
            for index, file in enumerate(file_list):
                print(f'{index+1}: {file}')

            un_zip_file_number = int(input('请输入要解压的文件(输入0解压所有): '))
            if un_zip_file_number > len(file_list):
                print('编号错误')
                continue
            if un_zip_file_number == 0:
                f.extractall(path=dir_nbame)
            else:
                f.extract(file_list[un_zip_file_number-1], path=dir_nbame)


def main():
    un_zip_file()


if __name__ == '__main__':
    main()