#lua #pycharm #jetbrains-ide #love2d
#lua #pycharm #jetbrains-ide #love2d
Вопрос:
Я использую PyCharm community edition для создания приложения love2d. Я создал горячую клавишу, которая запускает .bat
файл, чтобы запустить его с помощью lovec.exe
, которая открывает консоль при запуске приложения, затем я создал external tool
для запуска .bat
файла с помощью сочетания клавиш, когда я использую его, консоль открывается в PyCharm, которая ничего не записывает, и после закрытия приложения появляется все, что должно было быть написано, когда я запускаю .bat
файл вне PyCharm, он функционирует отлично.
Я хотел бы знать, есть ли очевидное исправление для этого или просто как запустить консоль вне pycharm с помощью внешнего инструмента.
Ответ №1:
Эта проблема связана со способом, которым Lua задерживает запись файлов, известным как «буферизация». Чтобы изменить это, поместите следующую команду в начало вашего файла:
io.stdout:setvbuf( 'no' ) -- Switches buffering for stdout to be off
Подробнее читайте в руководстве по Lua:
file:setvbuf (mode [, size])
Устанавливает режим буферизации для выходного файла. Доступно три режима:
- «нет»: нет буферизации; результат любой операции вывода отображается немедленно.
- «полный»: полная буферизация; операция вывода выполняется только тогда, когда буфер заполнен или когда вы явно
flush
вводите файл (см.io.flush
).- «строка»: буферизация строк; вывод буферизуется до тех пор, пока не будет выведена новая строка или не будет получен какой-либо ввод из некоторых специальных файлов (например, с терминального устройства).
В последних двух случаях
size
указывается размер буфера в байтах. По умолчанию используется соответствующий размер.