IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

remplacer chemin absolu par chemin relatif


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Par défaut remplacer chemin absolu par chemin relatif
    Bonjour,

    J'aimerai savoir comment on peut remplacer des chemins absolus par des chemin relatifs.

    Par exemple ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def showDialog_msa1(self):
            self.filename_msa1 = QFileDialog.getOpenFileName(self, 'Open file', '/home/lahure/Documents')
            fname = open(self.filename_msa1)
            self.data_file_msa1 = fname.read()
            self.namefile_msa1.setText(self.filename_msa1)
    ou ici ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    def treatment(self):
            self.parserfile()
            tabID=[]
            tabseq=[]
            tablength=[]
            sequence=""
            i=0
            fich=open("/home/lahure/Documents/msadiff/files/"+self.file_read,"r")
            for line in fich:
                line=line.replace("\n","")
                line=line.replace(".","-")
                if re.match("^>",line):
                    id_len=line.split("/")
                    tabID.append(id_len[0])
                    tablength.append(id_len[1])
                    tabseq.append(sequence)
                    sequence=""
                else:
                    sequence=sequence+line
                    sequence=sequence.upper()
            tabseq.append(sequence)
            tabseq.remove("")
            length=len(tabseq)
            self.set_seq_object(tabID, tablength, tabseq, length)
    J'aimerai ne plus avoir de chemin absolu, mais je sais pas du tout comment faire.

    Alaninho

  2. #2
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Tu peux peut être utiliser la commande :

    qui te permet d'avoir le chemin du fichier .py que tu exécute, à partir de ce chemin, à toi de compléter l'adresse.

    Ou, de mettre "/home/lahure/Documents" en variable de configuration, comme ça si ça change tu ne le change qu'une seule fois dans ton programme.
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Par défaut
    Je peux pas utiliser /home/lahure/documents car ensuite le programme sera sur un serveur et donc l'accès à mon compte sera privé.
    Tu peux me donner un exemple avec la commande os.getcwd() stp.

    Merci

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour.

    os.getcwd() va renvoyer le dossier d'où est lancé le script, et non où est le script.

    Personnellement, j'utilise : os.path.dirname( __file__ ).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Par défaut
    Merci, pourrai-je avoir un exemple avec os.getcwd(), car je comprend par en quoi elle remplace le chemin absolu.

  6. #6
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    alaniho, l’idée est bien de mettre “en dur” dans ton code un chemin relatif vers ton/tes fichiers ?

    Dans ce cas, il faut que tu récupères la racine courante de ce chemin relatif.

    os.getcwd() va te retourner le chemin absolu vers le dossier d’où a été lancé ton script (le dossier courant dans la console dans laquelle tu l’as lancé, par ex.)

    os.path.dirname(__file__) va te retourner le chemin absolu vers le dossiercontenant ton script (file étant une variable spéciale qui contient toujours le chemin absolu vers le fichier du script).

    À toi de voir quelle option (quelle racine) te conviendrait le mieux.

    Ensuite, une fois que tu as ta racine, tu la joint à ton chemin relatif pour obtenir le chemin définitif.

    Par exemple, en supposant que tes fichiers soient dans un dossier data, frère du dossier contenant ton script, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import os
    root = os.path.dirname(__file__)
    rel_path = os.path.join("..", "data")
     
    abs_path = os.path.join(root, rel_path)
     
    # Tu peux maintenant utiliser abs_path…
    PS : Utilise toujours os.path.join pour assembler les éléments de test chemins, comme ça python se charge de gérer les différents séparateurs selon l’OS courant (/ sous Unix, \ sous Windows, etc.).

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    avec os.path.relpath

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Transformé chemin absolu en chemin relatif?
    Par diki971 dans le forum Access
    Réponses: 1
    Dernier message: 04/06/2014, 13h35
  2. Changer un chemin absolue en chemin relatif
    Par Chillon dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/10/2010, 17h14
  3. charger feuille CSS par chemin absolu du système de fichiers
    Par luctheo dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 26/08/2008, 08h45
  4. Chemin absolue vers chemin relatif
    Par TheDrev dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 13/02/2008, 11h32
  5. chemin relatif vs chemin absolu
    Par maxos75 dans le forum ASP
    Réponses: 7
    Dernier message: 29/03/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo