Как мне выполнить итерацию по всем строкам файлов, передаваемых в командной строке?

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

  •  23-08-2019
  •  | 
  •  

Вопрос

Обычно я делаю это на Perl:

whatever.pl

while(<>) {
    #do whatever;
}

тогда cat foo.txt | whatever.pl

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

Это было полезно?

Решение

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

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

Другие советы

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

Что- то вроде этого:

import sys

for line in sys.stdin:
    # whatever
import sys

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

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

import sys

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top