TGViewer
| کانال توسعه‌دهندگان پایتون | | کانال توسعه‌دهندگان پایتون | @developixpython · 7.69K subscribers
Post #147 2.91K
📌 امروز یک اسکریپت کاملاً کاربردی می‌سازیم: اسکن یک پوشه، پیدا کردن فایل‌ها، و خروجی گرفتن یک گزارش CSV با Python.

سناریو واقعی 👇
فرض کن روی سرور یا سیستم خودت هزاران فایل داری و می‌خواهی:
- اسم همه‌ی فایل‌ها
- سایز هر فایل
- تاریخ آخرین تغییر
رو به‌صورت یک گزارش تمیز در یک فایل CSV داشته باشی تا بعداً با Excel یا pandas تحلیلش کنی.

این کار را با ماژول‌های استاندارد os و pathlib و csv انجام می‌دهیم، کاملاً بدون وابستگی خارجی. برای جزئیات بیشتر هم می‌شود به مستندات رسمی Python سر زد:
os
pathlib
csv

💡 ایده کلی
یک مسیر ورودی می‌گیریم (مثلاً یک پوشه پروژه، یا فولدر logs سرور)، روی کل زیرپوشه‌ها loop می‌زنیم، اطلاعات هر فایل را می‌خوانیم و در یک فایل report.csv ذخیره می‌کنیم.

نمونه کد کامل:
import os
from pathlib import Path
import csv
from datetime import datetime


def scan_directory(root_dir: str, output_csv: str = "report.csv") -> None:
root_path = Path(root_dir).expanduser().resolve()

if not root_path.exists() or not root_path.is_dir():
raise ValueError(f"مسیر نامعتبر است: {root_path}")

rows = []
for dirpath, dirnames, filenames in os.walk(root_path):
for name in filenames:
file_path = Path(dirpath) / name
stat = file_path.stat()
size_bytes = stat.st_size
mtime = datetime.fromtimestamp(stat.st_mtime)

rows.append({
"path": str(file_path),
"size_bytes": size_bytes,
"modified_at": mtime.isoformat(timespec="seconds"),
})

with open(output_csv, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["path", "size_bytes", "modified_at"])
writer.writeheader()
writer.writerows(rows)

print(f"گزارش ساخته شد: {output_csv} ({len(rows)} فایل)")


if __name__ == "__main__":
# مثال: اسکن پوشه جاری
scan_directory(".")


نکته‌ها و کاربردهای واقعی 🔍
- این اسکریپت روی هر سیستم دارای Python 3 اجرا می‌شود، بدون نصب پکیج اضافه.
- خروجی report.csv را می‌توانی مستقیم با pandas بخوانی و روی آن تحلیل اندازه فایل‌ها، پیدا کردن فایل‌های خیلی بزرگ، یا مانیتور کردن growth یک فولدر انجام بدهی.
- برای مسیرهای حجیم، بهتر است روی دیسک‌های شبکه‌ای کمی حوصله داشته باشی؛ os.walk همه چیز را می‌گردد.

یک بار روی پوشه پروژه‌ات اجرا کن، نتیجه‌اش معمولاً شگفت‌انگیز است 🤓
اگر مفید بود، برای بقیه پایتونیست‌ها هم بفرست تا آن‌ها هم از این اسکریپت ساده اما کاربردی استفاده کنند.

🔖 #Python #پایتون #Python #Automation #Filesystem #Script #CSV #pandas

👤 Developix

💎 Channel: @DevelopixPython
  • 👍 7
  • 👎 3
  • ❤ 2
More from @developixpython
  1. Sep 30, 2026💠 نسخه جدید کتابخانه FastAPI منتشر شده است 🔸 ارتقا از نسخه 0.141.1 به 0.142.2 🔖 #fastap…
  2. Sep 8, 2026آرگومان پیش‌فرض لیست؛ باگ خفن ولی بی‌سر‌و‌صدا 😅 خیلی‌ها (حتی حرفه‌ای‌ها) یه زمانی این سوت…
  3. Sep 6, 2026🔥 پروژه: مهارت‌های تحقیق آکادمیک با Claude Code اگر برای پروژه‌های پایتونی مقاله، مستندات…
  4. Aug 24, 2026خیلی وقت‌ها با باگ‌های عجیب روبه‌رو می‌شویم که فقط به خاطر یک فاصلهٔ اضافی یا خط‌جدید ته ر…
  5. Aug 12, 2026🔥 پروژه: ‏DSPy فریم‌ورک برنامه‌نویسی LLM DSPy یه فریم‌ورک پایتونی از آزمایشگاه NLP اس…
  6. Aug 9, 2026مدیریت درست resource مثل فایل، connection دیتابیس یا lock، کلی باگ و Memory Leak بالقوه را…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →