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 :

Python problème et question.


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Python problème et question.
    Bonjour,
    Je débute dans la programmation python et j'ai voulu lancer un petit programme style launcher pour différents programmes et j'aurais voulu savoir si il y avait moyen de lancer un programme sans avoir à spécifier le chemin d'accès complet afin de pouvoir partager le launcher avec quelques amis (Qui n'ont donc pas les même chemins d'accès que moi).

    J'ai aussi un petit problème dans le launcher:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    import subprocess
    import os
    
    print ("*********************")
    print ("Launcher v3 - Toshy")
    print ("*********************")
    print ("")
    print ("")
    print ("")
    
    def begin ():	
    	print ("1. Menu World Of Warcraft")
    	print ("2. Lancer Minecraft")
    	print ("3. Lancer League Of Legends")
    	print ("4. Lancer Warcraft ROC")
    	print ("5. Lancer Warcraft TFT")
    	print ("6. Lancer Mumble")
    	print ("7. Lancer TeamSpeak3")
    	print ("8. Lancer Google Chrome")
    	print ("9. Lancer Opera")
    	print ("10. Lancer Firefox")
    	print ("11. Lancer TeamViewer")
    	print ("")
    	choix = raw_input ("Votre choix: ")
    	if choix == "1":
    		print ("")
    		print ("1. Lancer World Of Warcraft")
    		print ("2. Lancer Repair.exe")
    		print ("3. Supprimer le cache")
    		print ("4. Retour au menu")
    		print ("")
    		schoix = raw_input ("Votre choix: ")
    		if schoix == "1":
    			subprocess.call("Z:/Jeux/World Of Warcraft/wow.exe")
    		elif schoix == "2":
    			subprocess.call("Z:/Jeux/World Of Warcraft/repair.exe")
    		elif schoix == "3":
    			os.delete("Z:/Jeux/World Of Warcraft/cache")
    		elif schoix == "4":
    			print ("")
    			begin ()
    	elif choix == "2":
    		subprocess.call("Z:/Jeux/Minecraft/Minecraft.exe")
    	elif choix == "3":
    		subprocess.call("Z:/Jeux/League Of Legends/League of Legends/lol.launcher.exe")
    	elif choix == "4":
    		subprocess.call("Z:/Jeux/Warcraft III/Warcraft III.exe")
    	elif choix == "5":
    		subprocess.call("Z:/Jeux/Warcraft III/Frozen Throne.exe")
    	elif choix == "6":
    		subprocess.call("Z:/Soft/Mumble/mumble.exe")
    	elif choix == "7":
    		subprocess.call("Z:/Soft/TeamSpeak/ts3client_win64.exe")
    	elif choix == "8":
    		subprocess.call("C:/Users/Nph/AppData/Local/Google/Chrome/Application/chrome.exe")
    	elif choix == "9":
    		subprocess.call("Z:/Soft/Opera/opera.exe")
    	elif choix == "10":
    		subprocess.call("Z:/Soft/FireFox/firefox.exe")
    	elif choix == "11":
    		subprocess.call("Z:/Soft/TeamViewer/Version7/TeamViewer.exe")
    	else:
    		print ("")
    		print ("Choix incorrect...")
    		print ("")
    		print ("*****************************")
    		print ("")
    		begin ()
    begin ()
    J'ai mis en rouge la partie qui me cause problème. Le launcher fonctionne correctement sauf l'option en rouge. Lorsque j'essaye de la lancer, le programme affiche un message d'erreur et se coupe mais je n'ai pas le temps de voir le message d'erreur.

    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pour ce qui est de os.delete je ne connais pas.
    Supposant que 'cache' est un répertoire je vous propose shutil.rmtree.

    Pour le chemin cela risque d’être plus compliqué...

    @+

  3. #3
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Je testerais l'existence du fichier avant de le supprimer.
    Il y a aussi os.remove() ou os.rmdir() si c'est un répertoire.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Pausekawa: Je débute un peu en python ^^'. Pour utiliser ta commande, je dois mettre "import shutil" au début de mon programme, c'est ça?

    Awalter1: Le dossier existe, je l'ai vérifié. C'est pour supprimer le cache de mon dossier WoW directement à partir de mon launcher ^^.

    Ps: Je vais test la solution du shutil.rmtree

    Edit: Le shutil.rmtree marche. Merci
    Il me reste maintenant à trouver comment pouvoir supprimer les chemins d'accès afin de pouvoir partager le programme ^^.

  5. #5
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    si par supprimer les chemins tu penses à ceux codés en dur dans ton script, alors ca va être difficile.
    Je te propose de te servir d'un fichier de configuration via le module ConfigParser
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    import ConfigParser
    CONFIG_FILE = "config.ini"
     
     
    def load_config(filename=CONFIG_FILE):
        config = ConfigParser.ConfigParser()
        #ouverture d'un fichier en écriture ou #open(filename, "r")
        fichier = open(filename)
        #la méthode config.readfp attend un fichier ouver en écriture
        config.readfp(fichier)
        #on ferme le fichier après traiterment
        fichier.close()
        return config
     
    def save_config(config, filename=CONFIG_FILE):
        #On ouvre un fichier en mode écriture
        fichier = open(filename, "w")
        #la méthode config.write(ConfigParser.ConfigParser.write) attend un fichier ouvert en écriture
        config.write(fichier)
        #on ferme le fichier après traitement
        fichier.close()
     
     
    def test():
        config = ConfigParser.ConfigParser()
        #Il faut créer une section (si elle n'existe pas encore
        config.add_section("games")
        #Ensuite, on ajoute les infos dans la section correspondante
        config.set("games", "wow",  "C:/games/wow.exe")
        config.set("games", "2", "C:/games/my_game2.exe")
        #On sauvegarde la configuration
        save_config(config)
        #On vérifie le résultat
        loaded = load_config()
        print (loaded.options("games"))
     
    if __name__ == "__main__":
        test()
    ca donne comme fichier:
    [games]
    wow = C:/games/wow.exe
    2 = C:/games/my_game2.exe

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Afranck64: Avec mon programme, je voulais supprimer le dossier "Cache" de world of warcraft (Qui se recrée automatiquement au lancement de wow). Avec la solution de Pausekawa, ça a l'air de marcher ^^.
    Maintenant, je dois trouver comment faire pour que le programme puisse lancer wow.exe (Par exemple) où qu'il soit sur la machine afin que je puisse le partager avec quelques amis (Qui n'auront par conséquent pas les mêmes chemins d'accès que moi aux programmes.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 428
    Points : 37 010
    Points
    37 010
    Par défaut
    Salut,

    Citation Envoyé par Toshy135 Voir le message
    wow.exe (Par exemple) où qu'il soit sur la machine afin que je puisse le partager avec quelques amis (Qui n'auront par conséquent pas les mêmes chemins d'accès que moi aux programmes.
    Pourquoi ne pas utiliser la proposition de mettre les chemins dans un fichier .ini faite par Afranck64?
    - W

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    J'ai cru qu'il parlait du dossier que je voulais supprimer et pour être honnête; débutant python, je n'ai pas compris son code :s

  9. #9
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Citation Envoyé par Toshy135 Voir le message
    J'ai cru qu'il parlait du dossier que je voulais supprimer et pour être honnête; débutant python, je n'ai pas compris son code :s
    Je parlais bien de mettre les liens dans un fichier.
    Le truc avec les fichiers de configuration, c'est qu'on a besoin de programmer pour en faire. Tu ouvres ton éditeur, et tu en écris un comme tu veux.
    Ton programmes doit juste connaitre ce qu'il doit chercher à l'intérieur.
    En fait, il est (quasi) certain que tes amis et toi ne concervez/installés pas vos jeux dans le mêmes répertoires. Alors, d'une manière ou d'une autre, il faudra dire au programme où il peut récupèrer les liens des jeux(et donc, le fichier de configuration).
    Le truc cool avec, c'est que tu peux permettre à tes amis d'ajouter autant de jeux qu'ils veulent. (Mais ils devront eux-même configurer le fichier) Ne serait-ce via une petite interface graphique.

    Quelle partie du code ne comprends-tu pas? #Je pensais avoir assez commenté

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Ah d'accord ^^.
    Et si par exemple il rajoute "Diablo", je peux configurer pour qu'il y aie un print qui s'ajoute à la liste des jeux?
    Pour le fichier de config qu'ils peuvent modifier, si j'ai bien compris, ils peuvent le modifier à chaque fois que le programme se lance?

  11. #11
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Citation Envoyé par Toshy135 Voir le message
    Ah d'accord ^^.
    Et si par exemple il rajoute "Diablo", je peux configurer pour qu'il y aie un print qui s'ajoute à la liste des jeux?
    Pour le fichier de config qu'ils peuvent modifier, si j'ai bien compris, ils peuvent le modifier à chaque fois que le programme se lance?
    Oui, je le peux, mais ca ne t'apprendrais rien, alors, je pourrais juste (avec tous les autres) te guider pour que tu le fasses de toi-même.
    Ainsi, tu pourras avoir une appli se présentant:
    Menu
    1- Lancer un jeu
    2- Ajouter un jeu
    3- Editer un jeu
    4- Autres
    5- Quitter
    ps: La ligne de commande, c'est magnifique

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Je ne demande un programme tout fait :p
    Je préfère avoir les ingrédients et préparer mon plat tout seul sinon, je passerai juste ma vie sur le forum à venir poser mes questions ^^'.
    Pourrais-tu juste m'expliquer comment je pourrais donc faire pour que l'utilisateur puisse modifier le programme comme tu l'as expliquer dans ton dernier message?
    Ps: Si tu as skype ou mumble, on pourrait discuter par audio, ça serait plus facile :p

  13. #13
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    En supposant que tes jeux soient dans la section "games", pour ajouter un jeu tu aurais juste à:
    - charger la config, #load_config
    - ajouter le nom et le chemin via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_config.set("games", nom_game, chemin_game)
    - sauvegarder la config #save_config

    Pour récupérer tous les éléments dans une section, tu as:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    config.options(nom_de_la_section)  #"games" par exemple
    Pour récupérer tous les éléments dans une section tu as peux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for opt in c.options("games"):
        print (opt, c.get("games", opt))
    Et assez important: La fonction <load_config> doit vérifier que le fichier existe, à l'aide de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.path.exists(mon_chemin_ou_mon_fichier)
    Le cas échéant, pourrait renvoyer une configuration vide.

    Espéranant n'avoir rien oublié, jusque là.

    ps: Par "config vide", comprendre de préférence avec les différentes sections

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Un ami est venu chez moi m'expliquer ce que tu as tenté de m'expliquer et finalement, mon programme marche

    J'ai réussi à tout faire tout seul comme un grand *Fier*

    Merci à tous pour vos réponses rapides et précises

  15. #15
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 684
    Points
    13 684
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Toshy135 Voir le message
    Ah d'accord ^^.
    Et si par exemple il rajoute "Diablo", je peux configurer pour qu'il y aie un print qui s'ajoute à la liste des jeux?
    Non monsieur ! Diablo 3 mérite une icône dédiée bien en évidence sur le bureau ou dans le dock !!!


    Citation Envoyé par Toshy135 Voir le message
    Il me reste maintenant à trouver comment pouvoir supprimer les chemins d'accès afin de pouvoir partager le programme ^^.
    Il y a un problème majeur si tu veux supprimer les chemins d'accès : où ton programme doit-il chercher pour trouver les .exe de tes jeux ? Il ne va quand même pas parcourir tous les disques durs à chaque fois !

    Comme dit par afranck64, la solution est un fichier de configuration avec les chemins d'accès... et tant qu'à faire autant mettre le chemin complet avec le fichier .exe. Ainsi, tu modifies quand tu veux le fichier de configuration, pour ajouter et enlever les jeux que tu souhaites. Ton programme Python lit ce fichier et affiche le contenu du fichier de configuration tel qu'il est au lancement.

    Enfin, bon, si tu as réussi, tu as dû comprendre tout ça. Si ton problème est résolu, clique sur le bouton en bas de la page ^^

    Citation Envoyé par Toshy135 Voir le message
    Je ne demande un programme tout fait :p
    Je préfère avoir les ingrédients et préparer mon plat tout seul sinon, je passerai juste ma vie sur le forum à venir poser mes questions ^^'.
    En voilà une bonne attitude !

    Citation Envoyé par Toshy135 Voir le message
    J'ai réussi à tout faire tout seul comme un grand *Fier*
    Normal ^^

Discussions similaires

  1. Python et Scapy : Questions diverses
    Par Dschub dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 01/05/2008, 16h47
  2. Problème et questions sur un calcul de distance
    Par ale2000 dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 11/09/2007, 21h33
  3. Sessions, variables, problèmes et questions
    Par gloubi dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2007, 11h46
  4. Problème jCombobox : Question métaphysique.
    Par catwomanette dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 16/01/2007, 11h47
  5. Firbird / IB Expert / MySQL : problèmes et questions
    Par DragOr dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/12/2006, 12h56

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