吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 770|回复: 3
收起左侧

[求助] python环境下调用winrar解压子目录中特定文件

[复制链接]
xxkiss 发表于 2023-8-30 17:29
本帖最后由 xxkiss 于 2023-8-30 19:03 编辑

最近学习python中,想调用winrar批量解压几万个文件,
目前已做到能把所有文件按完整路径解压在压缩包同目录,
但是因为包中文件太多太大,大部分包解压的时间来到了10秒以上,
在想能否只解压我需要的那一个文件,位于output.zip\xpells\app01 中的Data文件,
于是各种晚上查资料,查例子,硬是没搞定,特来求助,望各位大神多多提点小弟,拜谢!

目前的代码如下,Data文件只会解压到output文件夹中,而无法保持原始的两层目录,待解决
   for i in un_df.index:
        df_data = df.loc
        log_id = df_data.get(columns[1])
        acc = df_data.get(columns[2])
        f_path = my_data.loc[my_data[columns[2]] == acc].values[0][1]
        password = df_data.get(columns[3])
        print(acc, password)
        print(f'开始处理文件:{f_path}')
        ex_path = os.getcwd() + folder_path + f'/{acc}'
        if os.path.exists(ex_path):
            shutil.rmtree(ex_path)
        os.makedirs(ex_path, exist_ok=True)
  command = [
            'C:\Program Files\WinRAR\WinRAR.exe',
            'x',
            #'-ibck',   #如果去掉-ibck前面的#号,winrar会后台运行,解压速度会明显变慢
            '-o+',
            f'-p{password}',
            f'{f_path}',
            f'{ex_path}',
            f'xpells\\app01\\Data'  #压缩包内的目录结构,最终要解压的文件
        ]
        try:
            # 执行解压命令
            subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True, text=True)
            print('解压成功')
        except subprocess.CalledProcessError as e:
            print('解压失败:', e.stderr)
            continue
        except Exception as e:
            print('发生错误:', str(e))
            continue

image.png


image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

asd124689 发表于 2023-8-31 07:54
还能这操作?手动能否从压缩包中只解压出特定文件呢?
 楼主| xxkiss 发表于 2023-8-31 11:05
asd124689 发表于 2023-8-31 07:54
还能这操作?手动能否从压缩包中只解压出特定文件呢?

手动肯定是可以的呀
lbbas 发表于 2023-9-1 11:09
本帖最后由 lbbas 于 2023-9-1 11:10 编辑

查了下winrar好像命令行没有特定解压单个文件的命令可选。可以试试第三方库 unrar。
https://python-unrar.readthedocs.io/en/v0.3/rarfile.html#rarfile-objects

[Python] 纯文本查看 复制代码
RarFile.getinfo(name) #获取文件info
RarFile.extract(member, path=None, pwd=None) # member可以是info对象
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表