Как мне выполнить итерацию по всем строкам файлов, передаваемых в командной строке?
Вопрос
Обычно я делаю это на 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 зависит исключительно от его входных данных, и вы можете модульно протестировать его с помощью всего, что подчиняется парадигме входного потока, разделенного строками.
Не связан с StackOverflow