Comment puis-je itérer sur toutes les lignes de fichiers transmis sur la ligne de commande?

StackOverflow https://stackoverflow.com/questions/715277

  •  23-08-2019
  •  | 
  •  

Question

Je fais habituellement ceci en Perl:

whatever.pl

while(<>) {
    #do whatever;
}

cat foo.txt | whatever.pl puis

Maintenant, je veux le faire en Python. J'ai essayé sys.stdin mais je ne sais pas comment faire comme je l'ai fait en Perl. Comment puis-je lire l'entrée?

Était-ce utile?

La solution

Essayez ceci:

import fileinput
for line in fileinput.input():
    process(line)

Autres conseils

import sys
def main():
    for line in sys.stdin:
        print line
if __name__=='__main__':
    sys.exit(main())

Quelque chose comme ceci:

import sys

for line in sys.stdin:
    # whatever
import sys

for line in sys.stdin:
    # do stuff w/line

Je déteste battre un cheval mort, mais je suggère d'utiliser une fonction pure?

import sys

def main(stdin):
  for line in stdin:
    print("You said: " + line.strip())

if __name__ == "__main__":
  main(sys.stdin)

Cette approche est agréable car principale dépend uniquement sur son entrée et vous pouvez le tester unité avec tout ce qui obéit au paradigme du flux d'entrée délimité par la ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top