Python: использовать ввод из другой команды - PullRequest
4 голосов
/ 14 марта 2012

Мне интересно, как я могу управлять вводом другой команды из сценария Python.

Пример:

$ cat myfile.txt | my_python_script.py

Как мой скрипт может управлять потоком ввода из команды cat? Как я могу получить входные данные от этих переданных команд?

... Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Простой и достаточно универсальный способ сделать это - использовать модуль fileinput.

import fileinput

for line in fileinput.input()
    # do things with line

Таким образом, вы можете использовать сценарий в конвейере (как вам нужно прямо сейчас) или передать один или несколько файлов сценарию в качестве параметра (подумайте my_python_script.py input.txt input2.txt).

1 голос
/ 14 марта 2012

Хорошая альтернатива чтению стандартного ввода через sys.stdin.readlines() : используйте модуль pipe .

Модуль pipe определяет класс для абстрагирования концепции конвейера -последовательность конвертеров из одного файла в другой.Поскольку модуль использует командные строки / bin / sh, требуется POSIX или совместимая оболочка для os.system () и os.popen ().

Вот хороший учебник .

...