Using Sys.stdin.readline() To Read Multiple Lines From Cmd In Python
Solution 1:
The solution to this problem depends on the OS you're using.
Basically, if you want multiline input, you'll have to use sys.stdin.read()
instead of sys.stdin.readline()
. Since sys.stdin
is a file-like object in Python, the read()
method will read until it reaches the end of a file. It is marked by a special character EOF
(end-of-file). On different OS'es there is a different way of sending it.
On Windows: Press Ctrl+Z after your input and then press Enter:
2 10
20 2
30 3
^Z
On a Unix-based OS: Press Ctrl+D after your input. No Enter is required (I believe)
If you want to get a list [2, 10, 20, 2, 30, 3]
from your input, you're fine. The split()
method splits by whitespace (spaces, newlines, etc.).
Solution 2:
I agree with everything @Leva7 has said. Nonetheless, I'd suggest another solution, which is to use raw_input
for Python 2 or input
for Python 3 like so:
args = []
s = raw_input() # input() for Python 3while s != '':
args.extend([int(arg) forargin s.strip().split()])
s = raw_input()
Of course, that's not a one-liner in any way, but it does the job and it's easy to see how it's done. Plus, no special characters are required at the end of the input.
Solution 3:
If you are on Windows make sure you finish your input with newline, otherwise ^Z (from pressing Ctrl-Z) will be included in your input. Also make sure you use English language layout - https://stackoverflow.com/a/17924627/9205085
Post a Comment for "Using Sys.stdin.readline() To Read Multiple Lines From Cmd In Python"