Python异步解压Zip和Tar文件
遍历指定目录查找Zip和Tar.gz文件,使用asyncio的run_in_executor进行异步解压,并实现不覆盖同名文件的逻辑。
npx skills add ECNU-ICALK/AutoSkill --skill python异步解压zip和tar文件 --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# 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 遍历目录解压压缩包 - 异步文件解压不覆盖
- Prompt
- Triggers
What does the Python异步解压Zip和Tar文件 skill do?
遍历指定目录查找Zip和Tar.gz文件,使用asyncio的run_in_executor进行异步解压,并实现不覆盖同名文件的逻辑。
How do I install it?
Run `npx skills add ECNU-ICALK/AutoSkill --skill python异步解压zip和tar文件 --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From ECNU-ICALK/AutoSkill, a repository with 539 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
