Как перебрать все строки файлов, переданных в командной строке? - PullRequest
19 голосов
/ 03 апреля 2009

Я обычно делаю это в Perl:

whatever.pl

while(<>) {
    #do whatever;
}

затем cat foo.txt | whatever.pl

Теперь я хочу сделать это на Python. Я пытался sys.stdin, но я не знаю, как это сделать, как я сделал в Perl. Как я могу прочитать ввод?

Ответы [ 5 ]

41 голосов
/ 03 апреля 2009

Попробуйте это:

import fileinput
for line in fileinput.input():
    process(line)
13 голосов
/ 03 апреля 2009
import sys
def main():
    for line in sys.stdin:
        print line
if __name__=='__main__':
    sys.exit(main())
6 голосов
/ 03 апреля 2009

Примерно так:

import sys

for line in sys.stdin:
    # whatever
3 голосов
/ 03 апреля 2009
import sys

for line in sys.stdin:
    # do stuff w/line
0 голосов
/ 17 октября 2018

Я ненавижу бить мертвую лошадь, но могу ли я предложить использовать чистую функцию?

import sys

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

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

Этот подход хорош, потому что main зависит исключительно от его ввода, и вы можете тестировать его с помощью всего, что соответствует парадигме входного потока с разделителями строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...