Come faccio a iterare su tutte le linee di file passati sulla riga di comando?

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

  •  23-08-2019
  •  | 
  •  

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?

È stato utile?

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
scroll top