Is there any easy way to handle multiple lines user input in command-line Python application?
I was looking for an answer without any result, becaus
import sys
text = sys.stdin.read()
After pasting, you have to tell python that there is no more input by sending an end-of-file control character (ctrl+D in Linux, ctrl+Z followed by enter in Windows).
This method also works with pipes. If the above script is called paste.py
, you can do
$ echo "hello" | python paste.py
and text
will be equal to "hello\n"
. It's the same in windows:
C:\Python27>dir | python paste.py
The above command will save the output of dir
to the text
variable. There is no need to manually type an end-of-file character when the input is provided using pipes -- python will be notified automatically when the program creating the input has completed.