【问题标题】:Love2d console on PyCharm only writes to console after closingPyCharm 上的 Love2d 控制台仅在关闭后写入控制台
【发布时间】:2019-03-07 12:34:01
【问题描述】:
我正在使用 PyCharm 社区版创建一个 love2d 应用程序。我创建了一个运行.bat 文件的热键以使用lovec.exe 运行它,它在应用程序运行时打开控制台,然后我创建了一个external tool 以通过键盘快捷键运行.bat文件,当我使用它时,控制台在 PyCharm 中打开,它不写任何东西,关闭应用程序后,所有应该写的东西都会出现,当我在 PyCharm 之外运行 .bat 文件时,它运行良好。
我想知道是否有明显的解决方法,或者只是如何通过外部工具在 pycharm 之外运行控制台。
【问题讨论】:
标签:
lua
pycharm
jetbrains-ide
love2d
【解决方案1】:
这个问题是由于 Lua 延迟写入文件的方式,称为“缓冲”。要更改它,请将以下命令放在文件顶部:
io.stdout:setvbuf( 'no' ) -- Switches buffering for stdout to be off
阅读更多 Lua 的manual:
file:setvbuf (mode [, size])
设置输出文件的缓冲模式。共有三种可用模式:
-
"no":不缓冲;任何输出操作的结果都会立即出现。
-
"full":完全缓冲;仅当缓冲区已满或您明确
flush 文件时才执行输出操作(请参阅io.flush)。
-
"line":行缓冲;输出被缓冲,直到换行符被输出或有来自某些特殊文件(例如终端设备)的任何输入。
对于最后两种情况,size 指定缓冲区的大小,以字节为单位。默认是合适的大小。