Я дополню другие ответы примером grep , который использует fileinput для реализации типичного поведения инструментов UNIX: 1) если файл не указан, он считывает данные из STDIN; 2) многие файлы могут быть отправлены в качестве аргументов; 3) -
означает стандартный ввод.
import fileinput
import re
import sys
def grep(lines, regexp):
return (line for line in lines if regexp.search(line))
def main(args):
if len(args) < 1:
print("Usage: grep.py PATTERN [FILE...]", file=sys.stderr)
return 2
regexp = re.compile(args[0])
input_lines = fileinput.input(args[1:])
for output_line in grep(input_lines, regexp):
sys.stdout.write(output_line)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))
Пример:
$ seq 1 20 | python grep.py "4"
4
14