Python input() 没有读取整个输入数据

Python input() does not read whole input data

我正在尝试从 stdin 读取数据,实际上我正在使用 Ctrl+C、Ctrl+V 将值传递到 cmd,但它在某个时候停止了该过程。它总是同一个点。输入文件是.in类型,格式是第一行是一个数字,接下来的3行是用space分隔的一组数字。我正在使用 Python 3.9.9。较长的文件(集合中的元素数量 > 10000)也会出现此问题,而短输入则一切正常。好像内存刚刚 运行 了。我有以下方法:

def readData():
# Read input
for line in range(5):
    x = list(map(int, input().rsplit()))
    if(line == 0):
        nodes_num = x[0]
    if(line == 1):
        masses_list = x
    if(line == 2):
        init_seq_list = x
    if(line == 3):
        fin_seq_list = x

return nodes_num, masses_list, init_seq_list, fin_seq_list

以及有效的数据:

6
2400 2000 1200 2400 1600 4000
1 4 5 3 6 2 
5 3 2 4 6 1

和长输入文件: https://pastebin.com/atAcygkk 它在序列处停止:... 2421 1139 322],所以它就像第 4 行的一部分。

要从“标准输入”读取输入,您只需要使用 stdin 流。由于您的数据都在行上,您可以只读到 EOL 定界符,而不必自己使用一些索引号来跟踪行。此代码将在 运行 为 python3.9 sowholeinput.py < atAcygkk.txtcat atAcygkk.txt| python3.9 sowholeinput.py.

时起作用
def read_data():
    stream = sys.stdin
    num = int(stream.readline())
    masses = [int(t) for t in stream.readline().split()]
    init_seq = [int(t) for t in stream.readline().split()]
    fin_seq = [int(t) for t in stream.readline().split()]
    return num, masses, init_seq, fin_seq

有趣的是,正如您所描述的那样,当使用终端 cut-and-paste 粘贴文本时,它不起作用。这意味着该方法的限制,而不是 Python 本身。