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, because I don't want to :
What I would like to achieve is to allow user pasting whole text (containing multiple lines) and capture the input as one string in entirely command-line tool . Is it possible in Python?
It would be great, if the solution worked both in Linux and Windows environments (I've heard that eg some solutions may cause problems due to the way cmd.exe works).
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.
You could get the text from clipboard without any additional actions which raw_input()
requires from a user to paste the multiline text:
import Tkinter
root = Tkinter.Tk()
root.withdraw()
text = root.clipboard_get()
root.destroy()
See also How do I copy a string to the clipboard on Windows using Python?
Use :
input = raw_input("Enter text")
These gets in input as a string all the input. So if you paste a whole text, all of it will be in the input
variable.
EDIT: Apparently, this works only with Python Shell on Windows.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.