106 votes

Pourquoi utiliser os.path.join plutôt que la concaténation de chaînes de caractères ?

Je ne suis pas capable de voir le tableau d'ensemble ici, je pense ; mais fondamentalement, je n'ai aucune idée de la raison pour laquelle vous utiliseriez os.path.join au lieu d'une simple concaténation normale de chaînes de caractères ?

J'ai surtout utilisé VBScript, donc je ne comprends pas l'intérêt de cette fonction.

102voto

Portable

Manipulation des chemins de fichiers en écriture une fois et il fonctionne sur de nombreuses plateformes différentes, gratuitement. Le caractère de délimitation est supprimé, ce qui vous facilite la tâche.

Smart

Vous n'avez plus à vous soucier de savoir si ce chemin de répertoire avait un barre oblique ou non . os.path.join l'ajoutera s'il le faut.

Clair

Utilisation de os.path.join rend évident pour les autres personnes lisant votre code que vous travaillez avec des chemins de fichiers. Les gens peuvent rapidement parcourir le code et découvrir qu'il s'agit d'un chemin de fichier intrinsèque. Si vous décidez de le construire vous-même, vous allez probablement détourner le lecteur de la recherche de problèmes réels dans votre code : "Hmm, quelques concats de chaînes de caractères, une substitution. C'est un chemin de fichier ou quoi ? Gah ! Pourquoi n'a-t-il pas utilisé os.path.join ?" :)

4voto

locojay Points 2276

Fonctionne sous Windows avec '\' et sous Unix (y compris Mac OS X) avec '/'.

pour posixpath voici le code simple

In [22]: os.path.join??
Type:       function
String Form:<function join at 0x107c28ed8>
File:       /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py
Definition: os.path.join(a, *p)
Source:
def join(a, *p):
    """Join two or more pathname components, inserting '/' as needed.
    If any component is an absolute path, all previous path components
    will be discarded."""
    path = a
    for b in p:
        if b.startswith('/'):
            path = b
        elif path == '' or path.endswith('/'):
            path +=  b
        else:
            path += '/' + b
    return path

Je n'ai pas Windows mais la même chose devrait être là avec '\'.

-2voto

bkaiser Points 641

Il est indépendant du système d'exploitation. Si vous codez en dur vos chemins comme C:\Whatever ils ne fonctionnent que sous Windows. Si vous les codez en dur avec le standard Unix "/", ils ne fonctionneront que sous Unix. os.path.join détecte le système d'exploitation sous lequel il est exécuté et joint les chemins en utilisant le symbole correct.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X