6

有没有简单的方法来处理命令行 Python 应用程序中的多行用户输入

我一直在寻找没有任何结果的答案,因为我不想

  • 从文件中读取数据(我知道,这是最简单的方法);
  • 创建任何 GUI(让我们只使用命令行,好吗?);
  • 逐行加载文本(它应该一次粘贴,而不是输入,也不是逐行粘贴);
  • 分别处理每一行(我想将整个文本作为字符串)。

我想要实现的是允许用户粘贴整个文本(包含多行)并将输入捕获为完全命令行工具中的一个字符串。在 Python 中可能吗?

如果该解决方案在 Linux 和 Windows 环境中都有效,那就太好了(我听说某些解决方案可能会由于 cmd.exe 的工作方式而导致问题)。

4

3 回答 3

7
import sys

text = sys.stdin.read()

粘贴后,您必须通过发送文件结束控制字符(在 Linux 中为ctrl+ ,在 Windows 中为 +)来告诉 python 没有更多输入。DctrlZenter

此方法也适用于管道。如果上面的脚本被调用paste.py,你可以这样做

$ 回声“你好” | 蟒蛇粘贴.py

并且text将等于"hello\n"。在windows中也是一样的:

C:\Python27>目录 | 蟒蛇粘贴.py

上面的命令会将输出保存dirtext变量中。当使用管道提供输入时,无需手动键入文件结尾字符——当程序创建输入完成时,python 将自动收到通知。

于 2012-09-19T12:05:08.913 回答
2

您可以从剪贴板获取文本,而无需raw_input()用户粘贴多行文本的任何其他操作:

import Tkinter
root = Tkinter.Tk()
root.withdraw()

text = root.clipboard_get()

root.destroy()

另请参阅 如何使用 Python 将字符串复制到 Windows 上的剪贴板?

于 2012-09-19T14:00:24.190 回答
0

利用 :

input = raw_input("Enter text")

这些作为所有输入的字符串输入。因此,如果您粘贴整个文本,所有这些都将在input变量中。

编辑:显然,这仅适用于 Windows 上的 Python Shell。

于 2012-09-19T11:43:53.470 回答