Je travaille sur une application qui peut être lancée directement, ou via stdin.Support de sys.stdin.readlines() ainsi que des arguments de ligne de commande en python?
Actuellement, si je ne transfère aucune donnée vers l'application, un EOF n'est jamais reçu et il se bloque en attente d'une entrée (comme ctrl + d). Le code ressemble à:
while True:
line = sys.stdin.readline()
print("DEBUG: %s" % line)
if not line:
break
J'ai aussi essayé:
for line in sys.stdin:
print("DEBUG (stdin): %s" % line)
return
Cependant dans les deux cas, un EOF n'est pas reçu si le programme est lancé directement il se bloque attendre.
J'ai vu des applications unix passer un seul drapeau de ligne de commande -
dans les cas où l'entrée stdin est attendue mais je me demande s'il existe une meilleure solution de rechange que celle-ci? Je préfère que l'utilisateur puisse utiliser l'application de manière interchangeable sans se souvenir d'ajouter un drapeau -
.
qu'est-ce que 'via stdin' signifie? Cela signifie-t-il que vous le lancez en tant que module? – Sraw
@Sraw Stdin est la donnée provenant de lorsque vous faites pipi dans l'application, par exemple. '' 'echo" a "| script.py''' met 'a' en tant qu'élément de sys.stdin – Codingo
Quel est votre système? J'ai obtenu le CTRL + D travaillé lors de l'appel du script directement sans aucun tuyau dans un Linux. –