如何用Python的rarfile库仅解压test.rar中的alex目录及内部文件
解决rarfile仅解压alex目录本身、无法提取内部文件的问题
问题原因
你当前的代码大概率只指定了解压alex目录这单个条目,没有覆盖该目录下的所有子文件和子目录,所以只会生成空的alex文件夹。
解决方案
遍历压缩包内的所有条目,筛选出路径以alex/开头的所有内容(包括目录本身和内部文件/子目录),逐个执行解压操作即可。
示例代码
import rarfile # 若系统未配置unrar环境变量,需手动指定工具路径(Windows示例) # rarfile.UNRAR_TOOL = r"C:\Program Files\WinRAR\UnRAR.exe" with rarfile.RarFile("test.rar", "r") as rf: # 筛选所有以'alex/'开头的条目,覆盖目录本身及内部所有内容 target_entries = [entry for entry in rf.infolist() if entry.filename.startswith('alex/')] # 逐个解压到指定路径(这里解压到当前目录,可修改path参数自定义路径) for entry in target_entries: rf.extract(entry, path="./")
关键说明
- 用
rf.infolist()获取压缩包内所有条目的完整信息,而非仅获取顶层目录名 - 通过
startswith('alex/')筛选条目,确保包含alex目录下的所有子文件、子目录 - 如果压缩包内的
alex目录存在父级路径(比如root/alex/),需调整筛选条件为entry.filename.startswith('root/alex/') - 确保依赖安装完成:执行
pip install rarfile unrar(Windows用户可能需额外安装WinRAR并配置环境变量,或手动指定UNRAR_TOOL路径)
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

