Ce face os.fspath(), os.fsencode() și os.fsdecode()
fspath(p) transformă orice obiect de tip cale (Path sau o clasă cu metoda __fspath__) în str sau bytes; textele și octeții sunt returnați neschimbați. Este util în funcții care trebuie să accepte orice fel de cale.
fsencode() transformă un nume de fișier în bytes, iar fsdecode() în text, folosind codificarea sistemului de fișiere și tratarea erorilor surrogateescape, astfel încât chiar și numele cu octeți invalizi pot fi convertite fără pierderi.
Parametri
| Parametru | Descriere |
|---|---|
cale / nume |
Calea sau numele. |
Ce returnează
str sau bytes.
Exemple
Exemplul 1: Conversii
import os
from pathlib import Path
print(os.fspath(Path("date") / "a.txt"), os.fspath(b"x"))
print(os.fsencode("Brașov.txt"))
print(os.fsdecode(b"Bra\xc8\x99ov.txt"))
print(repr(os.fsdecode(b"gresit\xff.txt")), os.fsencode(os.fsdecode(b"gresit\xff.txt")))
try:
os.fspath(42)
except TypeError as e:
print("Eroare:", e)
Rezultat
date/a.txt b'x'
b'Bra\xc8\x99ov.txt'
Brașov.txt
'gresit\udcff.txt' b'gresit\xff.txt'
Eroare: expected str, bytes or os.PathLike object, not int
Greșeli frecvente
- Folosești
str(cale)pentru a accepta căi: transformă în text și obiecte care nu sunt căi.os.fspathdă eroare clară pentru valori greșite.
Comenzi înrudite
pathlib.Path: Căile ca obiecte: unire cu /, citire, scriere și verificări, într-un singur loc.str.encode() și bytes.decode(): Transformă textul în octeți (encode) și octeții înapoi în text (decode), după o codificare.sys.getdefaultencoding(), getfilesystemencoding() și getfilesystemencodeerrors(): Codificările folosite implicit de interpretor și pentru numele de fișiere.