有没有简单的方法可以在命令行Python应用程序中处理多行用户输入?
我一直在寻找没有任何结果的答案,因为我不想:
我想要实现的是允许用户粘贴整个文本(包含多行)并在完全命令行工具中将输入捕获为一个字符串。在Python中有可能吗?
如果解决方案在Linux和Windows环境中都能正常工作,那将会很棒(我听说过,例如某些解决方案可能会因cmd.exe工作方式而导致问题)。
答案 0 :(得分:7)
import sys
text = sys.stdin.read()
粘贴之后,你必须通过在Linux中发送文件结束控制字符( ctrl + D )来告诉python没有更多输入, ctrl + Z 后跟在Windows中输入。
此方法也适用于管道。如果上面的脚本名为paste.py
,则可以执行
$ echo "hello" | python paste.py
和text
将等于"hello\n"
。它在Windows中是一样的:
C:\Python27>dir | python paste.py
上述命令会将dir
的输出保存到text
变量。当使用管道提供输入时,无需手动键入文件结束字符 - 当创建输入的程序完成时,将自动通知python。
答案 1 :(得分:2)
您可以从剪贴板中获取文字而不需要raw_input()
要求用户粘贴多行文字的任何其他操作:
import Tkinter
root = Tkinter.Tk()
root.withdraw()
text = root.clipboard_get()
root.destroy()
另见How do I copy a string to the clipboard on Windows using Python?
答案 2 :(得分:0)
使用:
input = raw_input("Enter text")
这些输入作为字符串输入所有输入。因此,如果您粘贴整个文本,则所有文本都将位于input
变量中。
编辑:显然,这只适用于Windows上的Python Shell。