带有txt文件和input()函数的python stdin

时间:2017-08-28 03:18:26

标签: python input stdin

我有一个input.txt文件,其中包含以下内容。

3 
4 5

我希望在命令行中使用以下命令将其用作标准输入。

python a.py < input.txt

在a.py脚本中,我试图使用input()函数逐行读取输入。我知道有更好的方法来读取标准输入,但我需要使用input()函数。

的天真方法
line1 = input()
line2 = input()

没用。我收到以下错误消息。

File "<string>", line 1
  4 5
    ^
SyntaxError: unexpected EOF while parsing

2 个答案:

答案 0 :(得分:1)

这样就行了,它有效:

read = input()
print(read)

但你只是在读一行。

来自input() doc:

  

然后该函数从输入中读取一行,将其转换为字符串   (剥离尾随换行符),然后返回。

这意味着如果文件没有以空行结尾或相同,文件的最后一个非空行不以end of line字符结尾,您将获得exceptions.SyntaxError并且不会读取最后一行。

答案 1 :(得分:0)

你提到HackerRank;看看我的一些旧提交内容,我认为我选择放弃input代替sys.stdin操纵。 input()next(sys.stdin)非常相似,但后者会很好地处理EOF。

举例来说,我对https://www.hackerrank.com/challenges/maximize-it/

的回答
import sys
import itertools

# next(sys.stdin) is functionally identical to input() here
nK, M = (int(n) for n in next(sys.stdin).split())

# but I can also iterate over it
K = [[int(n) for n in line.split()][1:] for line in sys.stdin]

print(max(sum(x**2 for x in combo) % M for combo in itertools.product(*K)))