2017-05-29 4 views
1

Je suis novice en python et je travaille sur shell interactif. J'essayais la bibliothèque standard de python et j'ai lu de la documentation que stdin.read() renvoie un argument de chaîne. Mais quand j'avance et imprime la valeur d'entrée de stockage de variable, il affiche un caractère aléatoire. Confus sur ce que cela signifieQue sys.stdin.read() retourne exactement en python?

>>>input=sys.stdin.read() 
>>>1 2 
>>>sys.stdout.write(input) 
>>>1 2 
    4 

Qu'est-ce que le 4 signifie. Pourquoi est-il affiché. Si à la place je fais print(input). Cela fonctionne bien et renvoie "1 2". Est-ce juste une valeur de déchets ou a-t-il une certaine signification. En outre, lorsque je divise l'entrée pour obtenir une liste. Il renvoie seulement deux éléments ['1', '2']. Comme prévu. Je suis curieux de savoir pourquoi 4 est affiché et ce n'est pas constant.

>>>input=sys.stdin.read() 
>>>1 2 3 4 
>>>sys.stdout.write(input) 
>>>1 2 3 4 
    8 

L'impression et la division fonctionnent à nouveau correctement.

Répondre

0

Le 4 ou 8 est renvoyé par sys.stdout.write. Cela "signifie" combien de caractères (ou octets) ont été imprimés.

Comme les documentation on sys.stdin and sys.stdout états:

Ces flux sont des fichiers texte réguliers comme ceux qui sont renvoyés par la fonction open().

et ces cours d'eau ont une méthode write:

Ecrire l'objet octets comme donné, b, au flux brut sous-jacent, et retourne le nombre d'octets écrits.

Vous pouvez simplement l'ignorer ou si elle trouble vraiment vous attraper juste le retour dans une variable:

>>> bytes_written = sys.stdout.write(input) 
1 2 

>>> bytes_written 
4