Je suis en cours d'exécution à travers quelques exercices en Python en ce moment, y compris un compteur simple ligne qui peut prendre l'entrée de la ligne de commande ou stdin:Stdin ne fonctionne pas comme prévu [Python]
#### line_count1.py ####
import sys
def count_lines(file):
n = 0
for line in file:
n = n + 1
return n
if len(sys.argv) == 1:
print("Needs stdin")
file = sys.stdin
else:
print("File given at command line")
file = open(sys.argv[1])
print (count_lines(file))
Si j'entre une fichier à la ligne de commande, à savoir python line_count1.py file_with_4_lines.txt, il fonctionne très bien, et je reçois la sortie:
File given at command line
4
Cependant, si je saisis afin qu'il a besoin stdin via python line_count1 .py, je reçois la sortie suivante:
Needs stdin
_
Mais ne fait jamais rien avec mon entrée stdin. Je peux entrer file_with_4_lines.txt, mais alors il le prend juste et attend moi pour entrer une autre ligne de stdin, n'éclatant jamais jusqu'à ce que je dois tuer le code dans le gestionnaire de tâches.
Qu'est-ce qui causerait cela? D'après ce que je comprends, dès que j'entre quelque chose pour stdin qui devrait déclencher le reste du code à passer. Mais ce n'est pas. Qu'est-ce que je rate?
vous attendez-vous à lire le contenu de ' file_with_4_lines.txt' quand vous tapez 'file_with_4_lines.txt' dans le cas' stdin'? Parce que ce n'est pas comme ça que 'stdin' fonctionne ... – ShadowRanger
Il est supposé égaler la variable de fichier avec stdin, qui est ensuite utilisée dans count_lines (fichier). – Chase