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 :

tester si un chemin existe


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Points : 76
    Points
    76
    Par défaut tester si un chemin existe
    Bonjour,

    Alors voilà mon problème qui comme d'habitude se pose sous windows (seven ici)
    Je charge un chemin venant d'un fichier texte qui est sous cette forme
    C:\Users\x\Deskyop\test.txt

    le fichier est bien présent quand je fais la commande dir du répertoire et porte bien ce nom avant que vous ne me le demandiez

    je fais simplement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os
    print pathRecup #m'affiche bien C:\Users\x\Deskyop\test.txt
    print os.path.isfile(pathRecup)
    Donc ua moment où je teste si le fichier existe, il m'affiche False
    J'ai bien essayé de doubler les '\' mais toujours le même résultat

    Si quelqu'un a déjà eu ce problème, je suis vraiment preneur
    Merci

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    c'est pas des '\', mais des '\\' il me semble pour windows.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Points : 76
    Points
    76
    Par défaut
    J ai deja teste cette solution mais sans resultat

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    remplace isfile par isabs, je veux vérifier que tu as bien un chemin absolu
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 67
    Points
    67
    Par défaut
    C:\Users\x\Deskyop\test.txt
    Deskyop ?

    Dans tous les cas, si Python dit False, c'est que le chemin ne correspond pas à un fichier ou n'existe pas.

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    arf
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Points : 76
    Points
    76
    Par défaut
    J'ai plus d'infos.

    si je fais ceci, ça me renvoie False.
    à part si je teste en faisant os.path.isabs mais avec ça je sais juste que c'est un chemin qui part de la racine et pas forcément que le fichier existe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pathloc = "C:\\Users\\x\Desktop\\test.txt"
    print os.path.exists(pathLoc)
    tandis que ça me renvoie True

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #pathloc = "C:\\Users\\x\Desktop\\test.txt"
    print os.path.exists("C:\\Users\\x\Desktop\\test.txt")
    Merci de votre aide

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    1) pathloc = "C:\\Users\\x\\Desktop\\test.txt"

    2) Je n'ai pas le retour de isabs

    3) Tu peux tester ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.path.isfile(os.path.abspath(pathloc))
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Points : 76
    Points
    76
    Par défaut
    Encore et toujours moi avec ce foutu problème.

    En fait quand j'initilise ma variable ça fonctionne, il me retourne bien True

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pathLoc = "C:\Users\x\Desktop\test.txt"
    print os.path.isfile(pathLoc)
    Mon problème maintenant est que cette variable est initialisée en lisant un fichier et là il me retourne False.
    Je suppose qu'il me met un caractère bizzare en plus mais dans le print je ne vois rien et j'ai essayé un replace("\n","") mais rien n'y fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    logfile = open(dir_path+'/param.txt', 'r') 
    #dans param.txt
    #path local=C:\Users\x\Desktop\test.txt
    pathLoc = os.path.normpath(logfile.readline().split("=")[1])
    print os.path.isfile(pathLoc)
    Je désespère vraiment de trouver donc si vous avez une solution, merci

  10. #10
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    C'est normal, ton problème est dû à readline(), il te renvoi une chaine de caractères avec '\n' à la fin de la chaine. Il faut virer ce '\n' à coup de strip()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with open(os.path.join(dir_path, 'param.txt'), 'r') as logfile:
        localpath = logfile.readline().split('=')
     
    print(localpath[1].strip('\n'))
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Points : 76
    Points
    76
    Par défaut
    merci pour votre aide, ça fonctionne nickel.


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

Discussions similaires

  1. Tester si un chemin existe
    Par caparenlive59 dans le forum Langage
    Réponses: 2
    Dernier message: 13/02/2008, 18h26
  2. Réponses: 2
    Dernier message: 20/05/2005, 10h18
  3. MDI => Tester si une fenêtre existe déjà ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/04/2005, 21h41
  4. Tester qu'une date existe
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2005, 10h37
  5. [langage] tester si un fichier existe
    Par schnecke dans le forum Langage
    Réponses: 3
    Dernier message: 02/03/2004, 11h24

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