CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python help

Akainu_2017
Akainu_2017
Niveau 9
16 octobre 2018 à 10:46:05

Bonjour,

Comment faire pour qu'un code fonctionne correctement chez l'utilisateur ? C'est à dire ne pas avoir à le modifier, j'explique le problème.

J'avais fait le tp Roboc d'open classroom, j'avais spécifié en répertoire de travail courant ceci :

import os
 
os.chdir("C:/Python/Tp-du-labyrinthe/Labyrinthe/Roboc")

Chez moi le code fonctionnait à merveille, mais chez les utilisateurs de mon programme ce n'était pas le cas puisqu'ils n'étaient pas sur le même répertoire de travail courant que moi.

Le problème c'est que j'ai aussi téléchargé la correction du tp et c'est exactement la même chose que moi, le code ne fonctionnait pas chez moi j'ai du le faire fonctionner en mettant mon propre répertoire de travail courant.

J'ai aussi corrigé trois élèves différents et sur les trois élèves j'ai aussi du modifier le répertoire pour que le code fonctionne.

Dans la correction entre pair on a un critère qui dit que si le code fonctionne comme attendu on met 1 point sinon 0.

Moi j'ai toujours mis 1 point même si je devais juste modifier le répertoire de travail courant car ça m'avait l'air naturelle puisque tout le monde avait fait "l'erreur".

Sauf que les mecs qui m'ont corrigés m'ont toujours dit qu'il fallait utiliser un chemin relatif pour que le code fonctionne chez tout le monde sans avoir à modifier quoi que ce soit. Mais je pose la question, est ce réellement possible de faire ça ?

J'ai enlevé la fonction os.chdir et je constate que mon programme plante alors sur cette ligne :

for nom_fichier in os.listdir("cartes"):
  
    print(nom_fichier)
 
FileNotFoundError: [WinError 3] Le chemin d'accès spécifié est introuvable: 'cartes'

Je pourrais utiliser un chemin absolu mais ça ne fonctionnera alors que chez moi et non chez les utilisateurs.

Comment faire pour que ça fonctionne chez tout le monde de la même manière sans que les gens soient obligés de modifier mon code ???

Je constate que le code suivant fonctionne parfaitement :

from cartes import *

C'est bien la preuve que le dossier cartes contenu dans le même dossier que mon fichier que j'exécute est bien trouvé.

ShowBekS_75
ShowBekS_75
Niveau 7
17 octobre 2018 à 12:41:47

Salut,
oui c'est possible !


import os 
  
cheminDeRepertoire = os.path.dirname(os.path.realpath(__file__))
  
for racine, dossiers, fichiers in os.walk(cheminDeRepertoire): 
    for fichier in fichiers:
        if fichier.endswith('Roboc.py'): 
            print racine+'/'+str(fichier)

j'ai crée 2 répertoires et voici la réponse:

/home/showbeks/Desktop/tmp/Tp-du-labyrinthe/Labyrinthe/Roboc.py
/home/showbeks/Desktop/files/Tp-du-labyrinthe/Labyrinthe/Roboc.py

J'espère que ça t'aidera !

Message édité le 17 octobre 2018 à 12:42:58 par ShowBekS_75
Akainu_2017
Akainu_2017
Niveau 9
18 octobre 2018 à 09:24:36

Le 17 octobre 2018 à 12:41:47 showbeks_75 a écrit :
Salut,
oui c'est possible !


import os 
  
cheminDeRepertoire = os.path.dirname(os.path.realpath(__file__))
  
for racine, dossiers, fichiers in os.walk(cheminDeRepertoire): 
    for fichier in fichiers:
        if fichier.endswith('Roboc.py'): 
            print racine+'/'+str(fichier)

j'ai crée 2 répertoires et voici la réponse:

/home/showbeks/Desktop/tmp/Tp-du-labyrinthe/Labyrinthe/Roboc.py
/home/showbeks/Desktop/files/Tp-du-labyrinthe/Labyrinthe/Roboc.py

J'espère que ça t'aidera !

Merci d'avoir pris le temps de me répondre.

Par ailleurs j'ai déjà trouvé une bonne solution à mon problème depuis :

os.chdir(os.path.dirname(os.path.realpath(__file__)))
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment