Подтвердить что ты не робот

Как перенаправить команду оболочки на вход Python script?

Это, вероятно, что-то действительно базовое, но я не могу найти для этого хорошего решения. Мне нужно написать python script, который может принимать входные данные из такого канала:

$ some-linux-command | my_script.py

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

cat email.txt | script.py

Или это будет просто передано моим файлом .forward непосредственно из sendmail. Это означает, что входной файл может быть чем-то относительно большим, если у него есть вложение, и, вероятно, это будет электронное письмо, позже мне придется поместить в базу данных отправителя, тему и т.д., Но я написал сценарии базы данных в python, так что часть будет в порядке. Основная проблема заключается в том, как захватить данные, поступающие из канала.

4b9b3361

Ответ 1

Используйте sys.stdin для чтения ввода. Пример:

Пример содержимого s.py:

import sys
data = sys.stdin.readlines()
print data

- Запуск:

    [email protected]:~$ cat t.txt
    alpha
    beta
    gamma

    [email protected]:~$ cat t.txt | python ./s.py
    ['alpha\n', 'beta\n', 'gamma\n']

Вы также можете сделать python script в качестве оболочки script с помощью этого Shebang:

#!/usr/bin/env python

и изменение разрешения на "a + x"

 [email protected]:~$ cat t.txt |  ./s.py
 ['alpha\n', 'beta\n', 'gamma\n']

Ответ 2

прочитайте из sys.stdin, который является файлом типа object