命令行Python应用程序中的多行用户输入

2024-05-17 04:05:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

如果这个解决方案在Linux和Windows环境下都能工作,那就太好了(我听说有些解决方案可能会因为cmd.exe的工作方式而导致问题)。


Tags: 工具方法字符串答案命令行用户文本应用程序
3条回答

您可以从剪贴板中获取文本,而无需用户执行任何附加操作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?

使用:

input = raw_input("Enter text")

它们以字符串形式输入所有输入。因此,如果粘贴整个文本,所有文本都将位于input变量中。

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

import sys

text = sys.stdin.read()

粘贴后,您必须通过发送文件结束控制字符(Linux中的ctrl+D,Windows中的ctrl+Zenter来告诉python不再有输入。

这种方法也适用于管道。如果上面的脚本名为paste.py,则可以

$ echo "hello" | python paste.py

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

C:\Python27>dir | python paste.py

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

相关问题 更多 >