os.path.samefile(), sameopenfile() și samestat() în Python

Căi (os.path) Python 3.0+

Verifică dacă două căi (sau două fișiere deschise) se referă la același fișier de pe disc.

Sintaxă
os.path.samefile(cale1, cale2)
os.path.sameopenfile(fd1, fd2)
os.path.samestat(stat1, stat2)

Ce face os.path.samefile(), sameopenfile() și samestat()

Două căi diferite pot indica același fișier: prin legături simbolice, legături fizice (hard link) sau scrieri diferite ale aceleiași căi. samefile() compară dispozitivul și numărul inode al fișierelor, nu textul căilor.

sameopenfile() face același lucru pentru descriptori de fișiere deschise, iar samestat() pentru rezultate os.stat() deja obținute.

Parametri

Parametru Descriere
cale1, cale2 / fd1, fd2 / stat1, stat2 Cele două fișiere comparate.

Ce returnează

True sau False.

Exemple

Exemplul 1: Legături spre același fișier

import os
open("a.txt", "w").close()
open("b.txt", "w").close()
os.link("a.txt", "a_dur.txt")
os.symlink("a.txt", "a_simbolic.txt")
print(os.path.samefile("a.txt", "a_dur.txt"), os.path.samefile("a.txt", "./a_simbolic.txt"))
print(os.path.samefile("a.txt", "b.txt"))
with open("a.txt") as f1, open("a_dur.txt") as f2:
    print(os.path.sameopenfile(f1.fileno(), f2.fileno()))
print(os.path.samestat(os.stat("a.txt"), os.stat("a_simbolic.txt")))

Rezultat

True True
False
True
True

Greșeli frecvente

  • Compari textul căilor ca să eviți copierea unui fișier peste el însuși. O legătură simbolică trece testul; folosește samefile.

Comenzi înrudite