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 :

Probleme d'encodage et d'affectation de variable en "OU"


Sujet :

Python

  1. #1
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut Probleme d'encodage et d'affectation de variable en "OU"
    Hello,
    j'essais de faire un script pour pouvoir éteindre tout les ordinateurs sous windows du réseau, voila a quoi ressemble le script :
    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
    import sys,os
    # Options
    DEFAULT_NODE_BASE = "192.168.1."
    DEFAULT_NODE_START = 0
    DEFAULT_NODE_END = 255
     
    # Program code
    try:
        node_base = sys.argv[1]
        node_start = int(sys.argv[2])
        node_end = int(sys.argv[3])
    except IndexError:
        print("Unknkown IP range, asking...")
        node_base = raw_input("Enter the node base [%]\n >" % DEFAULT_NODE_BASE) | DEFAULT_NODE_BASE
        node_start = int(raw_input("Enter the sub-node start address [%s]\n >" % DEFAULT_NODE_START)) | DEFAULT_NODE_START
        node_end = int(raw_input("Enter the sub-node end address [%s]\n >" % DEFAULT_NODE_END)) | DEFAULT_NODE_END
     
     
    nodes = ["%s%s" % (node_base,node) for node in range(node_start,node_end)]
     
    for node in nodes:
        print("Requesting Shutdown of node %s" % (node))
        os.system("shutdown -m \\%s -s f" % node)
    Seulement j'ai cette erreur je ne sait pas pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Unknkown IP range, asking...
    Traceback (most recent call last):
      File "shutdown_nodes.py", line 14, in <module>
        node_base = raw_input("Enter the node base [%]\n >" % DEFAULT_NODE_BASE) | DEFAULT_NODE_BASE
    ValueError: unsupported format character ']' (0x5d) at index 22
    De plus je ne suis pas sure d'utiliser la bonne méthode pour le "OU", par exemple je veut que si l'utilisateur n'entre rien a "Enter the node base", que NODE_BASE soit DEFAULT_NODE_BASE, mais je pense que ca risque de poser probleme ici que que "" n'est pas Null...
    Voila j'espere que vous pourrez m'aider,
    Merci

    PS: comment faire en sorte que print ne fasse pas de retour a la ligne de facon compatible avec python3k ? (donc pas " print truc, ")

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Pour ce qui concerne l'erreur, tu as mis '[%]' dans la chaine de format, et Python ne sait pas quoi faire avec '%]'. Essaye '[%s]'.

    Pour ce qui concerne le 'OU', donne plus d'infos sur ce que tu veux faire avec exemples.

    Tyrtamos

  3. #3
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    en gros je veux que si l'utilisateur ne tape rien dans raw_input, il y ai une valeur par défaut de sélectionnée, mais le | n'a pas l'air de fonctionner,

    Bon j'ai remplacé par "or", ca fonctionne pour le premier promp (node_base), mais pour les autres j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "shutdown_nodes.py", line 15, in <module>
        node_start = int(raw_input("Enter the sub-node start address [%s]\n >" % DEFAULT_NODE_START)) or DEFAULT_NODE_START
    ValueError: invalid literal for int() with base 10: ''

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    C'est normal. Au 2ème raw_input, quand on ne répond rien, son résultat est une chaine vide. Mais int("") produit une erreur.

    Solution: intégrer le or et ce qui le suit à l'intérieur du int. Mais, bien sûr, il faut avoir la valeur par défaut sous forme de string.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    node_start = int(raw_input("Enter the sub-node start address [%s]\n >" % DEFAULT_NODE_START)  or ("%s" % DEFAULT_NODE_START) )
    Tyrtamos

  5. #5
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    Merci
    j'ai fait comme ca et ca fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node_end = int(raw_input("Enter the sub-node end address [%s]\n >" % DEFAULT_NODE_END) or DEFAULT_NODE_END)

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

Discussions similaires

  1. probleme d'affectation de variable
    Par claire_cartier dans le forum C
    Réponses: 7
    Dernier message: 20/11/2008, 11h46
  2. [Win32][2005perso]Probleme d'affectation sur variable Typée
    Par Qwazerty dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/08/2007, 23h55
  3. [PL/SQL]probleme affectation de variable dans une requete
    Par <% Bastien %> dans le forum SQL
    Réponses: 9
    Dernier message: 17/04/2007, 18h40
  4. [PS] affectation de variable
    Par madmortal dans le forum SQL
    Réponses: 2
    Dernier message: 01/09/2004, 13h17
  5. script SQL : affectation de variables
    Par Laura dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/10/2003, 21h32

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