119 votes

Concaténation de chemin indépendante de la plate-forme en utilisant "/", "\" ?

Dans le python, j'ai les variables base_dir et filename. Je voudrais les concaténer pour obtenir fullpath. Mais sous windows je devrais utiliser \ et pour POSIX /.

fullpath = "%s/%s" % ( base_dir, filename ) # for Linux

Comment puis-je rendre cette plateforme indépendante ?

23voto

Toby Points 447

En cherchant une vieille question ici, mais sur Python 3.4+, vous pouvez utiliser les opérateurs pathlib :

from pathlib import Path

# evaluates to ./src/cool-code/coolest-code.py on Mac
concatenated_path = Path("./src") / "cool-code\\coolest-code.py"

C'est potentiellement plus lisible que os.path.join() si vous avez la chance d'exécuter une version récente de Python. Mais, vous échangez également la compatibilité avec les anciennes versions de Python si vous devez exécuter votre code dans, par exemple, un environnement rigide ou hérité.

11voto

varunl Points 2425
import os
path = os.path.join("foo", "bar")
path = os.path.join("foo", "bar", "alice", "bob") # More than 2 params allowed.

0voto

sashab Points 1386

J'ai créé un cours d'aide pour cela :

import os

class u(str):
    """
        Class to deal with urls concat.
    """
    def __init__(self, url):
        self.url = str(url)

    def __add__(self, other):
        if isinstance(other, u):
            return u(os.path.join(self.url, other.url))
        else:
            return u(os.path.join(self.url, other))

    def __unicode__(self):
        return self.url

    def __repr__(self):
        return self.url

L'utilisation est :

    a = u("http://some/path")
    b = a + "and/some/another/path" # http://some/path/and/some/another/path

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