Comment puis-je itérer sur toutes les lignes de fichiers transmis sur la ligne de commande?
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?
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