我从控制台获取用户输入,但它只接受4096字节(4kb)的输入。既然这是一个特定的数字,它是否已经内置于语言中?是否有办法绕过它?
我正在使用的代码:
message = input("Enter Message: ")
答案 0 :(得分:1)
4096是2^12
如果您想要更大的输入,请考虑从文件中读取消息。
with open('myfile.txt', 'r') as f:
text = f.read()
现在,text
将是一个字符串,它是文件中的所有文本。你也可以这样做:
text = text.split('\n')
现在,text
是文本文件
答案 1 :(得分:1)
它是内置于语言中的东西
不,这个限制不是Python的一部分,它是控制台shell的限制。
有办法吗?
这取决于您的操作系统。有关如何在Linux上的控制台输入超过4096个字符,请参阅此答案:
Linux terminal input: reading user input from terminal truncating lines at 4095 character limit
答案 2 :(得分:1)
您需要禁用TTY的规范模式,可以使用termios来完成。 这样一来,您可以获得比4096长的线条,但是您将无法使用箭头,退格键等来编辑线条。
import sys
import termios
def get_line(prompt=""):
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ICANON
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
line = input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return line
str = get_line('test: ')
print('len: {}'.format(len(str)))
print(str)
与
相同stty -icanon