34 lines
1.1 KiB
Python
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)) |