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

Django Python Discussion :

test if os.path.exists [Python 3.X]


Sujet :

Django Python

  1. #1
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut test if os.path.exists
    Bonjour ,

    Je récupéré un projet ( Django ) réalisé par un prédécesseur, j'ai voulu commencer par un simple test , si le dossier réseau ( dossier sauvegardé par notre NAS ) est présent on affiche le message d'accueil normal , sinon on affiche un message d'erreur

    Dans le fichier view j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    import os
     
    # Create your views here.
    @login_required
    def welcome(request):
    	"""Here will be load the HTML code for the welcoming page"""
    	if (os.path.isdir("/media/NOEXIST/")):
    		return render(request, 'welcome.html', {'titre' : '', 'user':request.user})
    	else:
    		return render(request, 'welcome_error.html', {'titre' : '', 'user':request.user})
     
    ...
    Mon objectif est d'avoir un Non cela ne fonctionne pas tout le temps , hors , j'ai régulièrement ( 40-50 % du temps ) ok pas de soucis .

    Après juste pour test ( savoir si j'ai pas des soucis de droits ) , j'ai fait ce test qui me réponds correctement tout le temps ( False )


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os
     
    print(os.path.isdir("/media/NOEXIST/"))
    Avez vous une idée du soucis .
    Merci d'avance
    Matthieu

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,
    Citation Envoyé par paterson Voir le message
    j'ai régulièrement ( 40-50 % du temps ) ok pas de soucis .
    Si tu testes toujours avec le même non-existant dossier tu dois toujours avoir le même résultat et pas moitié-moitié.

    À l'identique, un même code doit produire le même résultat.

    La réponse est sans doute ailleurs que dans ce que tu nous montres.


    Edit: mets un print (ou un log) dans cette fonction pour être sûr que c'est elle qui te renvoie la page d'accueil.

  3. #3
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    Est-ce-que ca marche si tu utilises exists() au lieu de isdir() ?

    En plus d'instrumentaliser ton code, tu pourrais aussi essayer avec un debugger comme pdb.
    YourLabs Business Service: Conseil en Strategie Numerique / Club de 1337 Haxors depuis 2012 / Marque de Logiciels Libres / Blog / GitHub /
    Citation Envoyé par C.A.R. Hoare, The 1980 ACM Turing Award Lecture
    There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.”
    More great quotes - RIP Uriel

  4. #4
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Bonjour , j'ai créé un autre projet vierge , et ça fonctionnais.

    Après j'ai fait le choix de supprimer une chose a la fois, et j'ai remarqué que si je lance django via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python3 manage.py runserver 8001
    pas de soucis , si j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gunicorn my_app.wsgi:application --bind=127.0.0.1:8001
    ceci ne fonctionne pas .

    Merci pour votre aide
    Matthieu

  5. #5
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Points : 228
    Points
    228
    Par défaut
    Le path… Essayez avec un path absolu. gunicorn et la ligne de commande ne doivent pas avoir le même répertoire de travail.

    P.S. l'approche Python serait plus un try/except qu'un isdir.

  6. #6
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Ok merci pour l'information,

    Pour le try except, je sais que c'est une possibilité , mais je préfère limiter l'utilisation du except aux conditions : problème le script ne fonctionne pas , et non c'est une possibilité. ( j'ai beaucoup codé en C sur microcontrolleur , donc les erreurs possible c'est a toi de tout intégrer pour que ça fonctionne dans tous les cas . )

  7. #7
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2018
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mai 2018
    Messages : 73
    Points : 228
    Points
    228
    Par défaut
    Citation Envoyé par paterson Voir le message
    Ok merci pour l'information,

    Pour le try except, je sais que c'est une possibilité , mais je préfère limiter l'utilisation du except aux conditions : problème le script ne fonctionne pas , et non c'est une possibilité. ( j'ai beaucoup codé en C sur microcontrolleur , donc les erreurs possible c'est a toi de tout intégrer pour que ça fonctionne dans tous les cas . )
    Moi, j'ai fait beaucoup de pâtisserie, et quand on fait de la pâtisserie, quand on s'est trompé dans les proportions, on jette tout et on recommence. Du coup, je fais pareil en info, si j'ai un plantage, j'efface tout le code et je recommence…

    Quel rapport ? Le même. Un langage n'est pas qu'une syntaxe mais aussi les outils qui sont fournis avec cette syntaxe et les contextes d'exécution. S'excuser au lieu de demander la permission est un principe de base en Python. Car après tout, cette exception, vous l'écrirez après être venu poser la question ici pourquoi malgré le test, votre programme s'est planté parce que le dossier est absent alors qu'il vous avait répondu qu'il était présent…

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

Discussions similaires

  1. test si une valeur existe dans un tableau
    Par Maria1505 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 15/08/2007, 17h10
  2. JUnit Test type does not exist
    Par theAlex dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 10/07/2007, 13h13
  3. [XML] Teste si un attribut existe
    Par jbrasselet dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 04/07/2007, 12h55
  4. test d'un path
    Par sliderman dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/06/2007, 07h19
  5. test si une form existe déjà
    Par coucoucmoi dans le forum Composants VCL
    Réponses: 5
    Dernier message: 09/12/2003, 18h08

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