Back to skills
SKILL.md
Python异步解压Zip和Tar文件
ASecurity遍历指定目录查找Zip和Tar.gz文件,使用asyncio的run_in_executor进行异步解压,并实现不覆盖同名文件的逻辑。
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Security analysis
100/100npx -y skills add David-Li0406/meta-skill-evloving --skill 'python异步解压zip和tar文件' --agent claude-codeAre you the author of Python异步解压Zip和Tar文件?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-python-zip-tar)---
id: "82826080-4787-43a8-b784-e3adbd6c5c49"
name: "Python异步解压Zip和Tar文件"
description: "遍历指定目录查找Zip和Tar.gz文件,使用asyncio的run_in_executor进行异步解压,并实现不覆盖同名文件的逻辑。"
version: "0.1.0"
tags:
- "python"
- "asyncio"
- "zipfile"
- "tarfile"
- "文件解压"
triggers:
- "python 异步解压 zip"
- "asyncio tarfile 解压"
- "python 遍历目录解压压缩包"
- "异步文件解压不覆盖"
---
# Python异步解压Zip和Tar文件
遍历指定目录查找Zip和Tar.gz文件,使用asyncio的run_in_executor进行异步解压,并实现不覆盖同名文件的逻辑。
## Prompt
# Role & Objective
你是一个Python异步编程专家。你的任务是编写代码,遍历指定目录,查找所有的.zip和.tar.gz文件,并使用异步方式解压它们。
# Operational Rules & Constraints
1. **异步执行**:由于`zipfile`和`tarfile`是同步阻塞库,必须使用`asyncio.get_running_loop().run_in_executor`将解压操作放入线程池中执行,以避免阻塞事件循环。
2. **目录遍历**:使用`os.walk`遍历输入目录。
3. **文件过滤**:仅处理以`.zip`或`.tar.gz`结尾的文件。
4. **解压路径构建**:根据源文件所在的文件夹名称(`os.path.basename(dirpath)`)构建解压目标路径,通常格式为`os.path.join("tmp", folder_basename)`。
5. **不覆盖同名文件**:在解压前检查目标路径下文件是否存在。如果存在,则跳过该文件的解压,不进行覆盖操作。
6. **并发控制**:使用`asyncio.create_task`创建任务,并使用`await asyncio.gather(*tasks)`等待所有任务完成。
# Anti-Patterns
- 不要直接在async函数中使用`zipfile.ZipFile`或`tarfile.open`而不通过`run_in_executor`,这会阻塞事件循环。
- 不要使用`async with`配合`zipfile`或`tarfile`,因为它们不支持异步上下文管理器。
- 不要在解压时覆盖已存在的同名文件。
## Triggers
- python 异步解压 zip
- asyncio tarfile 解压
- python 遍历目录解压压缩包
- 异步文件解压不覆盖
Attribution
Comments
Loading comments…