Python 输入的字符串是有限的吗?

Python 输入的字符串是有限的吗?,python,string,input,Python,String,Input,我从控制台获取用户输入,但它只接受4096字节(4kb)的输入。既然这是一个如此具体的数字,那么它是语言中固有的吗?有没有办法解决这个问题 我正在使用的代码: message = input("Enter Message: ") 4096是2^12 如果您想要更大的输入,请考虑从文件中读取消息。 with open('myfile.txt', 'r') as f: text = f.read() 现在,text将是一个字符串,它是文件中的所有文本。您还可以执行以下操作: text =

我从控制台获取用户输入,但它只接受4096字节(4kb)的输入。既然这是一个如此具体的数字,那么它是语言中固有的吗?有没有办法解决这个问题

我正在使用的代码:

message = input("Enter Message: ")

4096是
2^12

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

with open('myfile.txt', 'r') as f:
    text = f.read()
现在,
text
将是一个字符串,它是文件中的所有文本。您还可以执行以下操作:

text = text.split('\n')
现在,
text
是文本文件中的行列表

这是语言中固有的东西吗

不,这个限制不是Python的一部分,而是控制台外壳的一个限制

有办法绕过它吗

这取决于您的操作系统。有关如何在Linux上的控制台上输入4096个以上字符的信息,请参阅以下答案:


您需要禁用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

4096是2的12次方
2^12
我的第一个问题是,为什么您希望用户在控制台输入超过4000个字符?我编写了一个密码程序,希望能够接受大量数据。对!这将取消它的限制:
stty-icanon