Операторы печати Python буферизуются с> перенаправлением вывода

Я выполняю инструкции print в python. Я выполняю свой скрипт так:

python script.py > out.log nohup & 

out.log печати не отображаются в out.log но программа заканчивается нормально.

Эта строка кода находится в .sh файле, который я выполняю ./script.sh

Обновление: журнал получает все данные, но не до тех пор, пока не будет напечатано определенное количество строк. Кажется, это буферизация вывода.

2 Solutions collect form web for “Операторы печати Python буферизуются с> перенаправлением вывода”

Когда stdout отправляется на tty, он будет буферизироваться по строке и будет краснеть каждую строку, но при перенаправлении на файл или канал он будет полностью буферизован и будет периодически очищаться только при переполнении буфера.

Вам нужно будет добавить sys.stdout.flush() после каждой строки, если вы хотите, чтобы результат был немедленно видимым или полностью отключил буферизацию. См. Отключить буферизацию вывода для способов выполнения последнего:

  1. Используйте ключ командной строки -u
  2. Оберните sys.stdout в объект, который сбрасывается после каждой записи
  3. Установить PYTHONUNBUFFERED env var
  4. sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

Ты пробовал:

  1. Запуск его без перенаправления и обеспечение того, чтобы все было напечатано, как ожидалось
  2. Запускать его не через скрипт оболочки, а просто из командной строки

?

Эти шаги могут помочь вам «вернуться домой» в проблему.

  • Какие библиотеки речи доступны в Linux?
  • cx_Oracle не распознает местоположение установки программного обеспечения Oracle для установки на Linux
  • libusb-1.x VS openUsb
  • Установка Tkinter на Amazon Linux
  • Как установить сетевой каталог с помощью python?
  • запуск python-daemon как непримиримого пользователя и сохранение членства в группах
  • Как определить pid процесса, запущенного через os.system
  • Почему Linux может принимать сокеты в многопроцессорности?
  • Python - лучший язык программирования в мире.