Come faccio a iterare su tutte le linee di file passati sulla riga di comando?
Domanda
Di solito faccio questo in Perl:
whatever.pl
while(<>) {
#do whatever;
}
quindi cat foo.txt | whatever.pl
Ora, io voglio fare questo in Python. Ho provato sys.stdin
ma non ho idea di come fare come ho fatto in Perl. Come faccio a leggere l'input?
Soluzione
Prova questo:
import fileinput
for line in fileinput.input():
process(line)
Altri suggerimenti
import sys
def main():
for line in sys.stdin:
print line
if __name__=='__main__':
sys.exit(main())
Qualcosa di simile a questo:
import sys
for line in sys.stdin:
# whatever
import sys
for line in sys.stdin:
# do stuff w/line
Io odio per battere un cavallo morto, ma mi permetto di suggerire utilizzando una funzione di puro?
import sys
def main(stdin):
for line in stdin:
print("You said: " + line.strip())
if __name__ == "__main__":
main(sys.stdin)
Questo approccio è bello perché principale dipende esclusivamente sul suo ingresso e l'unità si può verificare con qualsiasi cosa che obbedisce il flusso di input paradigma linea delimitato.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow