os.rename(), os.replace() și os.renames() în Python

Fișiere și directoare (os) Python 3.0+ (replace: 3.3+)

Redenumește sau mută fișiere și directoare.

Sintaxă
os.rename(sursa, destinatie)
os.replace(sursa, destinatie)
os.renames(vechi, nou)

Ce face os.rename(), os.replace() și os.renames()

rename() redenumește sau mută un fișier pe același disc. Dacă destinația există, pe Unix este înlocuită, iar pe Windows apare FileExistsError. replace() înlocuiește destinația pe orice sistem; pe același disc, operația este atomică, deci folosită pentru a salva fișiere în siguranță (scrii într-un fișier temporar, apoi îl înlocuiești pe cel vechi).

renames() creează directoarele necesare pentru destinație și șterge directoarele rămase goale în urma sursei.

Parametri

Parametru Descriere
sursa, destinatie Calea veche și cea nouă.

Ce returnează

None.

Exemple

Exemplul 1: Salvare atomică și mutare cu directoare noi

import os
with open("setari.json", "w") as f:
    f.write('{"v": 1}')
with open("setari.json.tmp", "w") as f:
    f.write('{"v": 2}')
os.replace("setari.json.tmp", "setari.json")
with open("setari.json") as f:
    print(f.read(), os.path.exists("setari.json.tmp"))
os.rename("setari.json", "config.json")
os.makedirs("vechi/2026")
open("vechi/2026/raport.txt", "w").close()
os.renames("vechi/2026/raport.txt", "arhiva/2026/raport.txt")
print(os.path.exists("vechi"), os.path.exists("arhiva/2026/raport.txt"))

Rezultat

{"v": 2} False
False True

Greșeli frecvente

  • Muți fișiere între discuri diferite cu os.rename și primești OSError: Invalid cross-device link. Folosește shutil.move.

Comenzi înrudite