| """删除 ``jobs_extract_archives.py`` 在 ``--out-root`` 下生成的 ``_wjad_extract_state`` 目录。 |
| |
| 只删「已解压」进度标记,**不会**删除 ``extracted/`` 里真正的数据集文件。 |
| 删完后可重新跑解压脚本,会按归档从头再解压一遍(若目录已存在可能覆盖/混合,按需先清 extracted)。 |
| |
| 用法示例:: |
| |
| # 本机 / Bucket 挂载路径与解压时 --out-root 一致 |
| python scripts/clear_wjad_extract_state.py --out-root /mnt/wjad/extracted/cosmos_hub |
| |
| # 只看会删什么,不真删 |
| python scripts/clear_wjad_extract_state.py --out-root F:/bucket/extracted/cosmos_hub --dry-run |
| |
| 环境变量(可选):: |
| |
| 设置 WJAD_EXTRACTED_ROOT 后可省略 --out-root |
| |
| Linux Job:: |
| |
| export WJAD_EXTRACTED_ROOT=/mnt/wjad/extracted/cosmos_hub |
| python scripts/clear_wjad_extract_state.py |
| """ |
|
|
| from __future__ import annotations |
|
|
| import argparse |
| import os |
| import shutil |
| import sys |
| from pathlib import Path |
|
|
| STATE_DIRNAME = "_wjad_extract_state" |
|
|
|
|
| def main() -> None: |
| p = argparse.ArgumentParser(description="Remove _wjad_extract_state under extracted out-root.") |
| p.add_argument( |
| "--out-root", |
| type=Path, |
| default=None, |
| help="与 jobs_extract_archives --out-root 相同;不设则用环境变量 WJAD_EXTRACTED_ROOT", |
| ) |
| p.add_argument("--dry-run", action="store_true", help="只打印路径,不删除") |
| args = p.parse_args() |
| out = args.out_root |
| if out is None: |
| env = os.environ.get("WJAD_EXTRACTED_ROOT") |
| if not env: |
| print( |
| "需要 --out-root 或环境变量 WJAD_EXTRACTED_ROOT", |
| file=sys.stderr, |
| ) |
| sys.exit(2) |
| out = Path(env) |
| out = out.resolve() |
| state = out / STATE_DIRNAME |
| if not state.exists(): |
| print(f"[clear] 不存在,跳过: {state}") |
| return |
| if not state.is_dir(): |
| print(f"[clear] 不是目录,拒绝: {state}", file=sys.stderr) |
| sys.exit(1) |
| print(f"[clear] {'(dry-run) ' if args.dry_run else ''}目标: {state}") |
| if args.dry_run: |
| n = sum(1 for _ in state.rglob("*")) |
| print(f"[clear] dry-run: 其下约 {n} 个条目(含文件与目录)") |
| return |
| shutil.rmtree(state) |
| print(f"[clear] 已删除: {state}") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|