遍历指定目录查找Zip和Tar.gz文件,使用asyncio的run_in_executor进行异步解压,并实现不覆盖同名文件的逻辑。
Scanned 9/27/2026
npx -y skills add David-Li0406/meta-skill-evloving --skill 'python异步解压zip和tar文件' --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Python异步解压Zip和Tar文件?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-python-zip-tar)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
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 遍历目录解压压缩包
- 异步文件解压不覆盖
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!