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 :

sys.stdin vs input()


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut sys.stdin vs input()
    Ne comprenant pas la doc python sur sys.stdin et sys.stdout, j'en fait appel aux experts.
    j'essaie d'avoir le même rendu entre:
    x = input("Floating point: ")
    et l'utilisation de stdin et out, je comprends pas pourquoi comment bien redirigé mes entrées et sorties standard pour arriver à mes fins.

    Toute aide pour serait la bienvenue.
    A.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> s1 = input()
    s
    >>> import sys
    >>> s2 = sys.stdin.read(1)
    s
    >>> s1 == s2
    True
    >>> s1
    's'
    >>> s2
    's'
    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 éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut,
    Les flux standard s'utilisent comme les file objects.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from sys import stdin, stdout
    stdout.write("Floating point: ")
    stdout.flush()
    x = stdin.readline()
    stdout.write("x = {}".format(x))
    Bonne continuation.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    merci fred et __dardanos__ pour ces clarifications !!

    autre chose, concernant stderr:
    je passe des arguments en ligne de commande à mon script (comme vous l'aurai compris avec le code) et je voudrais qu'il me crée un fichier erreur si par exemple je donne pas assez d'arguments. Je souhaiterais avoir votre opinion sur ce code:

    err = open("error.log", 'a')
    sys.stderr = err
    try:
    infilename = sys.argv[1] ; outfilename = sys.argv[2]
    except IndexError:
    err.write("Usage: " + sys.argv[0] + " infilename outfilename" + "\n")
    sys.exit(1)

    bizarrement les indentations n'apparaissent pas

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Oui, mais attention. Tel quelle, la sortie des erreurs est redirigée pour toute l'exécution.
    Si tu souhaites seulement écrire un message s'il y a un problème sur les arguments, le fichier log est à ouvrir dans le bloc except.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    c'est une bonne remarque à laquelle je n'avais pas pensé.
    je vais y réfléchir ...
    Merci pour tout __dardranos__

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

Discussions similaires

  1. sys.stdin dans pyscripter
    Par aschreck dans le forum Général Python
    Réponses: 2
    Dernier message: 21/06/2013, 19h31
  2. gobject main loop and sys.stdin.readline
    Par Invité dans le forum GTK+ avec Python
    Réponses: 2
    Dernier message: 01/03/2012, 08h44
  3. Test non bloquant de présence de caractères dans sys.stdin?
    Par tyrtamos dans le forum Général Python
    Réponses: 2
    Dernier message: 31/08/2008, 19h05
  4. [FORMULAIRE] Récupération de input 'text'
    Par danael dans le forum Flash
    Réponses: 5
    Dernier message: 19/07/2003, 11h31
  5. descripteur stdin stdout
    Par discogarden dans le forum Réseau
    Réponses: 10
    Dernier message: 08/01/2003, 23h25

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