C'est peut-être une question stupide, mais comme je ne trouve pas de réponse, je dois la poser.
En interactif python je veux traiter un message que je reçois avec:
>>> message = sys.stdin.readlines()
Tout fonctionne bien, mais ... comment l'empêcher d'obtenir une entrée et la faire enregistrer dans une variable de message? L'arrêt avec ctrl + c arrête tout le processus, il n'y a donc aucune entrée à enregistrer n'importe où. Je suppose qu'il y a une réponse facile que je ne trouve pas ...
Pour les systèmes basés sur Unix:
Bonjour, vous pouvez enregistrer: Ctrld
Ctrld ferme l'entrée standard (stdin) en envoyant EOF .
Exemple :
>>> import sys
>>> message = sys.stdin.readlines()
Hello
World
My
Name
Is
James
Bond
# <ctrl-d> EOF sent
>>> print message
['Hello\n', 'World\n', 'My\n', 'Name\n', 'Is\n', 'James\n', 'Bond\n']
Pour Windows:
Pour envoyer EOF sous Windows, vous pouvez remplacer Ctrld par Ctrlz
C'est une vieille question mais elle a besoin d'une mise à jour sur Windows et différentes dispositions de clavier.
Si ni CTRL + Z ni CTRL + D ** fonctionne pour vous sous Windows et que vous vous demandez ce qui se passe, procédez comme suit:
C'est quelque peu étrange et contre-intuitif. J'ai changé la disposition des touches il y a quelque temps pour inclure des caractères polonais, mais toutes les touches communes restent inchangées, z correspond toujours à z lorsque j'utilise le clavier normalement, normalement ctrl + z ne fait rien sur mon clavier, donc je ne devrais pas être changé . Mais apparemment, en cmd, cela fonctionne différemment, afin d'avoir un lien par défaut entre ctrl et z, je dois passer à la disposition par défaut, ou utiliser le contrôle y pour envoyer EOF.
Utilisation CTRL-D
.
message = sys.stdin.readlines()
abc
def
<CTRL-D>
# message == ['abc\n', 'def\n']
Sur Windows, faites simplement CTRL + Z et appuyez sur Entrée