init commit
This commit is contained in:
commit
9bc28e852c
|
|
@ -0,0 +1,8 @@
|
|||
# Ignore everything by default
|
||||
*
|
||||
|
||||
# Whitelist specific files and directories
|
||||
!.gitignore
|
||||
!SKILL.md
|
||||
!*.py
|
||||
!*.md
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Export all folders to zip files in output directory
|
||||
"""
|
||||
|
||||
import os
|
||||
import zipfile
|
||||
import shutil
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def export_folders_to_zip(base_dir: str = ".", output_dir: str = "output"):
|
||||
"""Export all subdirectories to individual zip files"""
|
||||
|
||||
# Create output directory
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
# Get all subdirectories
|
||||
items = os.listdir(base_dir)
|
||||
folders = [item for item in items if os.path.isdir(item) and not item.startswith('.') and item != output_dir]
|
||||
|
||||
if not folders:
|
||||
print("No folders found to export.")
|
||||
return
|
||||
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
exported_count = 0
|
||||
|
||||
print(f"{'='*60}")
|
||||
print(f"Exporting folders to ZIP")
|
||||
print(f"{'='*60}")
|
||||
print(f"Base directory: {os.path.abspath(base_dir)}")
|
||||
print(f"Output directory: {os.path.abspath(output_dir)}")
|
||||
print(f"Folders to export: {len(folders)}")
|
||||
print(f"{'='*60}\n")
|
||||
|
||||
for folder in folders:
|
||||
folder_path = os.path.join(base_dir, folder)
|
||||
zip_filename = f"{folder}_{timestamp}.zip"
|
||||
zip_path = os.path.join(output_dir, zip_filename)
|
||||
|
||||
try:
|
||||
print(f" Creating: {zip_filename}")
|
||||
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
|
||||
for root, dirs, files in os.walk(folder_path):
|
||||
# Skip hidden directories
|
||||
dirs[:] = [d for d in dirs if not d.startswith('.')]
|
||||
for file in files:
|
||||
if not file.startswith('.'):
|
||||
file_path = os.path.join(root, file)
|
||||
arcname = os.path.relpath(file_path, base_dir)
|
||||
zipf.write(file_path, arcname)
|
||||
print(f" [OK] {zip_filename}")
|
||||
exported_count += 1
|
||||
except Exception as e:
|
||||
print(f" [FAIL] {folder}: {e}")
|
||||
|
||||
print(f"\n{'='*60}")
|
||||
print(f"Done! Exported {exported_count}/{len(folders)} folders")
|
||||
print(f"Output directory: {os.path.abspath(output_dir)}")
|
||||
print(f"{'='*60}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description="Export all folders to zip files")
|
||||
parser.add_argument("--base-dir", type=str, default=".", help="Base directory to scan")
|
||||
parser.add_argument("--output-dir", type=str, default="output", help="Output directory for zip files")
|
||||
|
||||
args = parser.parse_args()
|
||||
export_folders_to_zip(args.base_dir, args.output_dir)
|
||||
Loading…
Reference in New Issue