Comment puis-je vérifier si stdin certaines données?

En Python, comment voulez-vous vérifier si sys.stdin a des données ou pas?

J'ai trouvé que os.isatty(0) pouvez non seulement vérifier si stdin est connecté à un appareil TTY, mais aussi s'il existe des données disponibles.

Mais si quelqu'un utilise un code tel que

sys.stdin = cStringIO.StringIO("ddd")

et après qui utilise os.isatty(0), il renvoie toujours Vrai. Que dois-je faire pour vérifier si stdin a données?

  • qu'est-ce exactement que vous voulez atteindre ?
  • Que se passe parce que os.isatty(0) vérifie si le fichier associé au descripteur de fichier (fd) 0 est un TTY. Lorsque vous modifiez le sys.stdin variable, vous ne modifiez pas le fichier associé à fd0. fd0 pointe toujours à l'origine de stdin (qui est un ATS dans votre cas).
  • Vérifier cette réponse. Il ne se rapportent à votre question?
  • Ciupitu,vous avez raison,j'utilise sys.stdin=cStringIO.Chaîne de caractères("ddd") pour la redirection de l'entrée standard stdin,ce que je veux, c'est comment vérifier sys.stdin est de les avoir données,si j'utilise sys.stdin.read() directement, il bloquera les dessous de chose et d'attendre toujours si aucune entrée n'donné
  • Je ne vois pas en quoi la lecture de cStringIO.StringIO("ddd") pourrait bloquer; il a toujours les données disponibles, sauf lorsque EOF est atteint de cours.
  • stackoverflow.com/questions/3762881/...
  • Il serait intéressant de savoir comment vous l'avez trouvé que os.isatty(0) pouvez non seulement vérifier si stdin est connecté à un appareil TTY, mais aussi s'il existe des données disponibles.

InformationsquelleAutor mlzboy | 2010-09-21