输入的字符串有限制吗?

7

我正在从控制台获取用户输入,但它只能接受4096字节(4kb)的输入。由于这是一个非常具体的数字,它是否是语言内置的/是否有方法可以解决这个问题?

我正在使用的代码:

message = input("Enter Message: ")

1
4096是2的12次方。2^12 - sshashank124
3
我的第一个问题是,为什么您希望用户在控制台中输入超过4000个字符? - TigerhawkT3
1
我写了一个密码程序,希望它能够接受大量的数据。 - noviceOne
3个回答

3

正确!这将取消限制:stty -icanon - Ricky Levi

1

4096是2^12

如果您需要更大的输入,请考虑从文件中读取消息。

with open('myfile.txt', 'r') as f:
    text = f.read()

现在,text 将会是一个字符串,包含文件中的所有文本。你还可以这样做:
text = text.split('\n')

现在,text 是您文本文件中行的列表。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接