Sari la conținut
← Python pentru automatizări
Progres curs 0 / 6 lecții (0%)

Operații pe fișiere și foldere

Lectură estimată: 3 minute

Estimare pentru text, la un ritm de 180 de cuvinte pe minut. Timpul pentru analizarea codului, exerciții și proiecte se adaugă separat și depinde de ritmul tău.

Operațiile pe fișiere și foldere sunt cel mai comun tip de automatizare: organizezi un folder de descărcări, redenumești în masă, arhivezi lunar, cauți fișiere după un tipar. Modulele `pathlib` și `shutil` fac totul curat.

pathlib: navigare și inspecție

from pathlib import Path

folder = Path.home() / "Downloads"

for f in folder.iterdir():                 # conținutul direct
    if f.is_file():
        print(f.name, f.suffix, f.stat().st_size)

for f in folder.rglob("*.pdf"):            # recursiv, doar PDF
    print(f)

Mutare, copiere, redenumire

import shutil
from pathlib import Path

src = Path("raport.csv")
src.rename("arhiva/raport-2026-01.csv")    # redenumire/mutare pe același disc
shutil.move("mare.zip", "backup/")          # mutare (și între discuri)
shutil.copy("sablon.docx", "nou.docx")      # copiere

Creare de foldere

Path("arhiva/2026/ianuarie").mkdir(parents=True, exist_ok=True)
# parents: creează și folderele intermediare
# exist_ok: nu dă eroare dacă există deja

Reguli de siguranță

  • Rulează întâi în „dry run": printează ce AI FACE, nu face nimic.
  • Nu șterge — mută în „gunoi" sau „arhivă" și golește manual mai târziu.
  • Verifică `f.is_file()` / `f.is_dir()` înainte de operații.
  • Fă backup înainte de prima rulare reală.

Organizator de descărcări (dry run întâi)

from pathlib import Path

DOWNLOADS = Path.home() / "Downloads"
CATEGORII = {
    "imagini": [".jpg", ".jpeg", ".png", ".gif"],
    "documente": [".pdf", ".docx", ".txt", ".xlsx"],
    "arhive": [".zip", ".rar", ".7z"],
}
DRY_RUN = True

for f in DOWNLOADS.iterdir():
    if not f.is_file():
        continue
    for categorie, extensii in CATEGORII.items():
        if f.suffix.lower() in extensii:
            dest = DOWNLOADS / categorie
            print(f"{f.name} -> {categorie}/")
            if not DRY_RUN:
                dest.mkdir(exist_ok=True)
                f.rename(dest / f.name)
            break

Exercițiu

Scrie un script care organizează un folder de test (creează-l cu fișiere false de diverse tipuri) în subfoldere pe categorie. Rulează-l întâi cu DRY_RUN = True, verifică ce ar face, apoi pune False și rulează real.

Greșeli frecvente

  • Rulezi direct pe folderul real fără dry run.
  • Ștergi fișiere în loc să le muți în arhivă.
  • Nu verifici is_file() și încerci să muți un folder ca fișier.
  • Suprascrii un fișier existent la destinație fără să verifici.

De reținut

  • pathlib pentru navigare (iterdir, rglob, suffix, stat).
  • shutil.move / copy; Path.rename; mkdir(parents=, exist_ok=).
  • DRY_RUN întâi — printează, nu acționa.
  • Mută, nu șterge; backup înainte de prima rulare.

Pe scurt

Automatizările de fișiere se fac cu pathlib și shutil, mereu testate întâi în dry run, mutând în loc de a șterge.

Operații pe fișiere cu simulare și domeniu restrâns

Înainte de redenumire sau mutare, rezolvă căile și confirmă că toate țintele rămân în directorul laboratorului. Construiește mai întâi lista operațiilor și detectează coliziunile. Nu executa o mutare recursivă pe o cale calculată fără verificare. Pentru acest exercițiu, nu șterge fișiere și nu urmări linkuri simbolice către alte directoare. Un mod dry-run trebuie să arate exact sursa și destinația.

Exemplu de lucru

from pathlib import Path
root = Path('laborator-fisiere').resolve()
root.mkdir(exist_ok=True)
for src in sorted(root.glob('*.txt')):
    if src.is_symlink():
        continue
    dest = src.with_name('arhiva-' + src.name)
    if not dest.resolve().is_relative_to(root):
        raise ValueError('Destinație în afara laboratorului')
    if dest.exists():
        raise FileExistsError(dest)
    print('SIMULARE', src.name, '->', dest.name)

Interpretarea rezultatului

Scriptul doar afișează planul. Nu adăuga rename până când lista și coliziunile nu sunt verificate pe copii. Repetarea poate genera prefixe multiple dacă nu definești regula pentru fișiere deja procesate. Păstrează un jurnal al operațiilor efectiv aplicate.

Exercițiu de consolidare

Adaugă două fișiere cu destinație conflictuală și verifică faptul că planul este refuzat înaintea oricărei modificări.

Aplicație practică

Sarcina

Planifică redenumirea a cinci fișiere într-un director de test.

Rezolvare orientativă și verificare

Generează întâi un dry-run cu numele vechi și nou. Oprește operațiunea la coliziuni.

Greșeală de evitat

Nu șterge sau muta recursiv pe căi nevalidate.

Documentație și surse

Ți-a plăcut lecția? Continuă cursul complet

Ai citit o lecție gratuită. Celelalte lecții, aplicațiile practice și materialele se deblochează odată cu cursul.

149 lei

Plată unică, acces pe viață la toate cele 6 lecții.

Vezi ce conține cursul →

Folosim cookie-uri esențiale pentru funcționarea site-ului și, cu acordul tău, cookie-uri de analiză și publicitate. Partenerii noștri, inclusiv Google, pot folosi cookie-uri pentru a afișa reclame relevante. Detalii în Politica de cookie-uri.