2012-03-14 2 views
4

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

Пример:

$ кошки myfile.txt | my_python_script.py

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

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

ответ

4

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

import fileinput 

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

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

+0

Я буду помнить об этом, спасибо большое. – user1174386

1

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

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

Приятный tutorial.

+0

Большое спасибо. Большое спасибо! Я буду читать балет – user1174386

Смежные вопросы