我正在从控制台获取用户输入,但它只能接受4096字节(4kb)的输入。由于这是一个非常具体的数字,它是否是语言内置的/是否有方法可以解决这个问题?
我正在使用的代码:
message = input("Enter Message: ")
这是语言内置的吗?
不是的,这个限制不是Python的一部分,而是控制台Shell的限制。
有什么解决方法吗?
这取决于您的操作系统。请参考此答案,了解如何在Linux控制台上输入超过4096个字符:
stty -icanon
。 - Ricky Levi4096是2^12
如果您需要更大的输入,请考虑从文件中读取消息。
with open('myfile.txt', 'r') as f:
text = f.read()
text
将会是一个字符串,包含文件中的所有文本。你还可以这样做:text = text.split('\n')
text
是您文本文件中行的列表。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
2^12
- sshashank124