输入的字符串是有限的?

时间:2015-05-19 02:55:01

标签: python string input

我从控制台获取用户输入,但它只接受4096字节(4kb)的输入。既然这是一个特定的数字,它是否已经内置于语言中?是否有办法绕过它?

我正在使用的代码:

message = input("Enter Message: ")

3 个答案:

答案 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