Windows上的Python 3:扩展stdin.readline()行缓冲区大小



在Windows上,交互式Pythonsys.stdin.readline()将Ctrl+V粘贴截断为512个字符。

如何延长此限制?我需要大的浆糊来制作原型。

尝试了fdopen()技巧,但没有成功。

macOS上的缓冲区似乎是1024。

UPD:看起来缓冲区大小是编译时常数。

在C中,可以用setvbuf()扩展缓冲区,但这个函数没有被Python封装,这很可悲。我想我会尝试用ctypesMSVCRT.DLL中调用它。

(在Mac操作系统上(将import readline添加到您的python脚本将扩展input()的限制

来自https://docs.python.org/3/library/readline.html

readline模块定义了许多函数,以便于从Python解释器完成和读取/写入历史文件。该模块可以直接使用,也可以通过rlcompleter模块使用,该模块支持在交互提示下完成Python标识符。使用该模块进行的设置会影响解释器的交互式提示和内置input((函数提供的提示的行为。

示例

import readline
data = input()
print(data)

这是一个错误:https://bugs.python.org/issue41849

  • sys.stdin.readline()确实有512个字符的缓冲区
  • input()具有16K字符缓冲区

所以目前input()可以作为一种变通方法。

相关内容

  • 没有找到相关文章

最新更新