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") # copiereCreare de foldere
Path("arhiva/2026/ianuarie").mkdir(parents=True, exist_ok=True)
# parents: creează și folderele intermediare
# exist_ok: nu dă eroare dacă există dejaReguli 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
- Python Tutorial — Python Software Foundation
Ț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 →