我有一个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
答案 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)))