Python / Автоматжуулалт (файл, хавтас)

Автоматжуулалт (файл, хавтас)

Дахин давтагдах ажлыг гараар хийх нь цаг үрдэг. 500 зургийн нэрийг өөрчлөх, тодорхой өргөтгөлтэй файлуудыг шүүн хавтаст хийх, хуучин лог файлуудыг автоматаар цэвэрлэх — эдгээрийг Python нэг удаа бичсэн кодоор хэдхэн секундэд хийдэг. Энд os, shutil, pathlib гурван стандарт модуль голлоно.

pathlib — орчин үеийн файлын зам

pathlib нь файлын замыг мөр биш объект хэлбэрт харуулдаг тул / оператороор хавтас нэгтгэж болно:

python
from pathlib import Path

# Одоогийн фолдер
одоогийн = Path.cwd()
print(одоогийн)

# Зам нэгтгэх
баримт = одоогийн / "баримтууд" / "тайлан.txt"
print(баримт)           # /home/user/баримтууд/тайлан.txt

# Файлын мэдээлэл
print(баримт.name)      # тайлан.txt
print(баримт.stem)      # тайлан
print(баримт.suffix)    # .txt
print(баримт.parent)    # /home/user/баримтууд

# Файл, хавтас байгаа эсэхийг шалгах
print(баримт.exists())
print(баримт.is_file())
print(баримт.is_dir())

Хавтас үүсгэх ба файл жагсаах

python
from pathlib import Path

# Хавтас үүсгэх (дундын хавтасуудыг ч үүсгэнэ)
шинэ_хавтас = Path("гаралт") / "2025" / "5-р сар"
шинэ_хавтас.mkdir(parents=True, exist_ok=True)
print(f"Хавтас үүсгэлээ: {шинэ_хавтас}")

# Хавтас доторх бүх файл жагсаах
эх_хавтас = Path("баримтууд")
for файл in эх_хавтас.iterdir():
    print(файл.name)

# Зөвхөн .txt файлуудыг олох (бүх дэд хавтасаас)
for файл in Path(".").rglob("*.txt"):
    print(файл)

Файл хуулах, зөөх, устгах

shutil модуль файл, хавтас хуулах, зөөхөд хэрэглэгдэнэ:

python
import shutil
from pathlib import Path

эх    = Path("тайлан.txt")
зорь  = Path("архив") / "тайлан_2025.txt"

# Хуулах
зорь.parent.mkdir(exist_ok=True)
shutil.copy2(эх, зорь)
print(f"Хуулагдлаа: {зорь}")

# Зөөх (нэр өөрчлөх ч ашигладаг)
шинэ_нэр = Path("тайлан_эцсийн.txt")
эх.rename(шинэ_нэр)

# Файл устгах
шинэ_нэр.unlink()

# Хавтасыг дотор нь бүгдтэй нь устгах
хуучин_хавтас = Path("түр_хавтас")
if хуучин_хавтас.exists():
    shutil.rmtree(хуучин_хавтас)
    print("Хавтас устгагдлаа ✓")

Бодит жишээ: файлуудыг өргөтгөлөөр ангилах

Татаж авалтын хавтасыг автоматаар цэвэрлэдэг программ — энэ нь практикт хамгийн их хэрэглэгдэх автоматжуулалтын жишээ:

python
import shutil
from pathlib import Path

АНГИЛАЛ = {
    "Зураг":   [".jpg", ".jpeg", ".png", ".gif", ".webp"],
    "Баримт":  [".pdf", ".docx", ".xlsx", ".txt", ".csv"],
    "Видео":   [".mp4", ".mov", ".avi", ".mkv"],
    "Хөгжим":  [".mp3", ".wav", ".flac"],
    "Код":     [".py", ".js", ".ts", ".html", ".css"],
}

def хавтас_цэвэрлэх(эх_хавтас: Path) -> None:
    тоолох = 0

    for файл in эх_хавтас.iterdir():
        if not файл.is_file():
            continue

        өргөтгөл = файл.suffix.lower()
        зорилтот_хавтас = None

        for ангилал, өргөтгөлүүд in АНГИЛАЛ.items():
            if өргөтгөл in өргөтгөлүүд:
                зорилтот_хавтас = эх_хавтас / ангилал
                break

        if зорилтот_хавтас is None:
            зорилтот_хавтас = эх_хавтас / "Бусад"

        зорилтот_хавтас.mkdir(exist_ok=True)
        shutil.move(str(файл), зорилтот_хавтас / файл.name)
        тоолох += 1

    print(f"{тоолох} файл ангилагдлаа ✓")


хавтас_цэвэрлэх(Path("Татаж авалт"))

Энэ программыг компьютерт тань байгаа "Татаж авалт" хавтасанд ажиллуулбал хэдэн зуун файл секундэд зохион байгуулагдана. Гараар хийхэд хагас цаг зарцуулах ажлыг Python нэг удаа автоматжуулж өгнө.

Дараагийн хичээлд:

CLI хэрэгсэл бүтээнэ — argparse модуль ашиглан командын мөрнөөс аргумент хүлээн авдаг, бусад хөгжүүлэгчид ашиглаж болох жинхэнэ хэрэгсэл хэрхэн бичихийг сурна.