【问题标题】:Input from Windows terminal for Python script从 Windows 终端输入 Python 脚本
【发布时间】:2021-04-06 09:24:08
【问题描述】:

我目前正在开发 GT-suite(一种多物理场仿真软件),我希望提高效率。 该软件包括 Python 和一个编写 Python 脚本的界面和一个控制台。

我想通过用户获取一个整数,但是当我使用input() 时,我收到以下错误:

Traceback (most recent call back)
  File «stdin» Line 29 in module
EOFError : EOF when reading a line

我搜索了一下,似乎控制台只是用于显示输出,所以我无法输入。

是否可以在Python读取函数input()时打开windows终端,在windows终端输入整数,回车,然后脚本读取输入的整数?

【问题讨论】:

    标签: python windows input terminal


    【解决方案1】:

    我不熟悉 GT-suite,但如果是真的控制台仅用于输出(听起来就是这样),那么您确实不能使用 input()

    使用subprocess 执行另一个使用input() 的脚本也不起作用,因为如果父进程没有标准输入,子进程将无法访问它。

    我能想到的一些可能的解决方法是:

    1. 寻找使用 GT-suite 软件获取用户输入的替代方法。如果它支持这样的事情,那可能是最好和最简单的解决方案。我搜索了一些关于它的信息,但不幸的是找不到它。但是,该网站提到了一个视频,其中“脚本根据用户输入执行 (...)”,建议这应该是可能的(或者我误解了它)。他们似乎也有一个 API,但我无法在没有帐户的情况下访问它。如果您能找到 API 文档,您可能会寻找一种获取用户输入的方法。

    2. 可以在 Python 中创建一个简单的 GUI,其中包含数字的文本输入字段。那应该行得通。但是,这不是一个简单/直接的解决方案,我怀疑你会变得“更有效率”。但这取决于您的用例,由您决定。

      有很多 GUI 框架,但如果您想快速测试是否可以在 GUI 中输入数字,您可以使用以下代码:

      from tkinter import *
      window = Tk()
      txtfld = Entry(window, bd=5)
      txtfld.place(x=0, y=0)
      window.title('Enter number')
      window.geometry("300x100")
      window.mainloop()
      

      这将创建一个带有文本字段的小窗口,您可以在其中输入数字。它还没有将值返回到主脚本。这只是测试这种解决方案是否适用于您的情况的最低要求。如果可行,您可以根据需要扩展脚本。

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 2017-04-26
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2019-12-13
      相关资源
      最近更新 更多