Smetti di usare le stringhe per rappresentare i percorsi in Python

 | Intelligenza-Artificiale

Ecco perché dovresti evitare di rappresentare i percorsi come stringhe e utilizzare invece Pathlib

fotografato da Matt Duncan SU Unsplash

Lavorare con i filesystem è uno dei compiti più banali nella programmazione. Sorprendentemente, molti di noi continuano a sbagliare poiché tendiamo a rappresentare i percorsi dei file come stringhe. Questo è fondamentalmente sbagliato ed è uno degli anti-pattern più comuni che sicuramente avrai già visto in molti repository Python diversi.

Nell’articolo di oggi discuteremo del motivo per cui è una cattiva idea utilizzare le stringhe (o anche i file os module) per rappresentare percorsi sui filesystem. Inoltre, discuteremo delle migliori pratiche e vedremo in azione come utilizzarle pathlib pacchetto per codificare correttamente i percorsi dei file in Python. Iniziamo!

Perché usare le stringhe per rappresentare i percorsi è una cattiva idea

Diversi sistemi operativi utilizzano convenzioni di denominazione diverse quando si tratta di rappresentare i percorsi sui propri file system. Ad esempio, Unix utilizza una barra / come separatore di directory mentre Windows utilizza le barre rovesciate \

# Unix (e.g. Linux, OSX, etc.)
/home/this/is/a/path/to/a/directory

# Windows
C:\home\this\is\a\path\to\a\directory

Portabilità del codice si riferisce a un insieme di principi che consentono al codice sorgente di essere eseguito su più ambienti diversi con lo stesso comportamento. Pertanto, la rappresentazione del percorso con stringhe non lo renderebbe possibile, a meno che non gestiamo i percorsi in modo diverso, in base al sistema operativo eseguito dal codice sorgente.

Ma anche in questo caso, renderemmo il nostro codice disordinato e inutilmente complesso.

# This is a bad practice
import platform

if platform.system() == 'Windows':
filepath = 'C:\home\this\is\a\path\to\a\directory'
else: # e.g. 'Darwin' for OSX or 'Linux'
filepath = '/home/this/is/a/path/to/a/directory'

Anche ulteriori operazioni sulle stringhe che rappresentano i percorsi diventeranno più complesse. Supponiamo che desideri concatenare due percorsi: la semplice concatenazione di stringhe potrebbe risultare in un percorso non valido, soprattutto se una o più stringhe contengono caratteri speciali come barre avanti o indietro.

path_1 = '/this/is/a/path/'
path_2 = '/another/path'

# filepath = '/this/is/a/path//another/path'
filepath = path_1 + path_2

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *