Files

34 lines
1.1 KiB
Python

#!/usr/bin/env python3
"""List files in a directory sorted by size, output as JSON."""
import os
import sys
import json
from pathlib import Path
def generate_report(directory: str) -> dict:
"""Generate a file size report for a directory."""
path = Path(directory)
if not path.exists():
return {"error": f"Directory does not exist: {directory}", "files": []}
if not path.is_dir():
return {"error": f"Path is not a directory: {directory}", "files": []}
files = []
for item in path.iterdir():
if item.is_file():
files.append({
"name": item.name,
"size": item.stat().st_size,
"path": str(item)
})
files.sort(key=lambda x: x["size"], reverse=True)
return {"files": files, "total": len(files), "directory": directory}
if __name__ == "__main__":
if len(sys.argv) != 2:
print(json.dumps({"error": "Usage: fs-report.py <directory>"}))
sys.exit(1)
report = generate_report(sys.argv[1])
print(json.dumps(report, indent=2))