在Windows上,交互式Pythonsys.stdin.readline()
将Ctrl+V粘贴截断为512个字符。
如何延长此限制?我需要大的浆糊来制作原型。
尝试了fdopen()
技巧,但没有成功。
macOS上的缓冲区似乎是1024。
UPD:看起来缓冲区大小是编译时常数。
在C中,可以用setvbuf()
扩展缓冲区,但这个函数没有被Python封装,这很可悲。我想我会尝试用ctypes
在MSVCRT.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()
可以作为一种变通方法。