Intereting Posts
ssh-agent: как сохранить ключ входа и добавить больше идентификаторов? Прочитайте файл с двумя столбцами, rsync каждую строку от столбца 1 до столбца 2 Как изменить док-станцию ​​в XFCE4? Запись на дисках NTFS (на Debian Wheezy) Переключитесь в ОЗУ или нет Найдите список всех файлов с шаблоном даты, чтобы снести их вместе. Смена окон i3 с разделенной структурой В emacs, как я могу передать аргумент функции в определении ключа? Как отредактировать sources.list как root под Debian 9? сортировать данные ls пользователями В Arch Linux, как я могу узнать, какой пакет для установки будет содержать файл X? Как использовать Emacs для распознавания и автоматического открытия зашифрованного файла GPG в бронированном формате ASCII? Как избежать ряда подстановочных знаков в сценарии оболочки unix? Проблема с grep на нескольких файлах и отсутствие получения желаемого результата davfs2 сохраняет файлы в кэше дольше

Трубопроводные периодические данные между сценариями Python

Как получать данные из среды, например, bash

Я пытаюсь запустить два сценария Python в bash и pipe stdout из одного из них в stdin другого. Первый скрипт выводит один номер каждую секунду.

 ./script1 | ./script2 ./script1 > ~/file &; tail -f ~/file 

Я пробовал это, но не могу заставить его работать. script1 через print Python, а script2 – с echo "21.11 22.23 33.233" | ./script2 echo "21.11 22.23 33.233" | ./script2 и, как известно, работает.

Если я закончил script1 ofter некоторое время, а затем cat ~/file , я вижу фактические данные. Однако во время выполнения ни один из приведенных выше примеров не работает.

Как это сделать? Я хотел бы иметь возможность работать как с промежуточным файлом, так и без него.

В сценарии python убедитесь, что вы вызываете:

 sys.stdout.flush() 

после print . Вам не нужно делать это в каждом заявлении, но вы должны сделать это в каждой группе print которые должны быть обработаны. ( import sys если еще не сделано).