将python stdin流更改为Windows控制台输入

山姆

我想运行一个python 3脚本,通过stdin手动输入数据来为其提供文件

例如,假设我要用一行打印输入的内容。名为的脚本app.py如下所示:

from sys import stdin

print("Input says:"+stdin.readline())

然后,我可以通过以下两种方式运行它:

1.将文件作为stdin传递

python app.py < input.txt

2.提示用户输入

python app.py

我的问题是,在这两种情况下,读标准输入我想提示用户进行一些额外的数据。按照前面提到的示例,它将是:

from sys import stdin

print("Input says:"+stdin.readline())

print("Did you like that? (Yes/No)")
ans = input() # This line is the issue!
if( ans == "Yes"):
    print("You liked it!")    

上面的注释行对于情况2来说是完美的,但是对于情况1,它会EOFError: EOF when reading a line因为尝试从文件读取而引发错误。

我想知道在那行之前我可以做些什么

sys.stdin = SOMETHING

其中SOMETHING代表Windows控制台输入。我认为,如果我能够做到这一点,那么这两种情况都将正常工作。

f

您可以将两种情况视为相同(忽略差异)。您的脚本仅从stdin读取两行。可以从文件重定向stdin或将其附加到控制台,您的脚本在许多情况下可以相同地工作:

print("Read the first line from stdin", input())
answer = input("Did you like that? (Yes/No): ") # read 2nd line
if answer == "Yes":
    print("You liked it!")

请参阅可执行代码示例

问:我想要从文件或从控制台读取一些输入(取决于运行应用程序时使用的参数)。我希望能从控制台读取它们的其他几行。

要直接从控制台读取内容,而不管是否从文件中重定向了stdin,都可以使用msvcrt.getwch()请参阅中的示例用法getpass.win_getpass()

如果您在接受Unicode输入时遇到问题,安装win_unicode_console软件包您可以为python安装,特定用户,脚本整体或临时使用全局启用它win_unicode_console.enable()/.disable()要强制它使用控制台,您可以sys.stdin=None临时设置stdin是否被重定向或ReadConsoleW()自己(麻烦)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Windows控制台的默认代码页更改为UTF-8

来自分类Dev

将C ++控制台应用程序更改为Windows子系统

来自分类Dev

如何将Windows 10控制台屏幕缓冲区更改为超过9999?

来自分类Dev

如何将控制台代码更改为1252?

来自分类Dev

如何以编程方式将Python整个控制台屏幕的背景颜色更改为特定的RGB颜色?

来自分类Dev

我如何*临时*将*控制台*键盘映射更改为dvorak?

来自分类Dev

我如何*临时*将*控制台*键盘映射更改为dvorak?

来自分类Dev

Linux控制台如何将代码页更改为DOS CP437

来自分类Dev

将控制台输入文本下移

来自分类Dev

如何在Windows上通过Python控制交互式控制台的输入/输出?

来自分类Dev

如何在Windows上通过Python控制交互式控制台的输入/输出?

来自分类Dev

我可以将Linux控制台(Ctrl + Alt + F1)字体更改为Ubuntu Mono吗?

来自分类Dev

Unicode Python Windows控制台

来自分类Dev

将Kafka Stream输入输出到控制台?

来自分类Dev

将Java控制台输入作为语句运行

来自分类Dev

尝试将SerialPort输入打印到控制台

来自分类Dev

将Java控制台输入作为语句运行

来自分类Dev

继续将joptionpane输入添加到控制台

来自分类Dev

继续将joptionpane输入添加到控制台

来自分类Dev

Eclipse-将文件输入控制台

来自分类Dev

如果我在控制台窗口中单击,Windows 10控制台将停止运行

来自分类Dev

将Python 3 Spyder控制台中的Windows 8代码页从cp1252更改为utf-8

来自分类Dev

没有控制台的python用户输入

来自分类Dev

在等待python输入时打印到控制台

来自分类Dev

没有控制台的python用户输入

来自分类Dev

将命令确认发送到Windows控制台

来自分类Dev

在PyCharm中更改默认的Python / Flask控制台

来自分类Dev

将Python控制台输出保存到Java变量

来自分类Dev

将Python输出重定向到控制台窗口

Related 相关文章

  1. 1

    将Windows控制台的默认代码页更改为UTF-8

  2. 2

    将C ++控制台应用程序更改为Windows子系统

  3. 3

    如何将Windows 10控制台屏幕缓冲区更改为超过9999?

  4. 4

    如何将控制台代码更改为1252?

  5. 5

    如何以编程方式将Python整个控制台屏幕的背景颜色更改为特定的RGB颜色?

  6. 6

    我如何*临时*将*控制台*键盘映射更改为dvorak?

  7. 7

    我如何*临时*将*控制台*键盘映射更改为dvorak?

  8. 8

    Linux控制台如何将代码页更改为DOS CP437

  9. 9

    将控制台输入文本下移

  10. 10

    如何在Windows上通过Python控制交互式控制台的输入/输出?

  11. 11

    如何在Windows上通过Python控制交互式控制台的输入/输出?

  12. 12

    我可以将Linux控制台(Ctrl + Alt + F1)字体更改为Ubuntu Mono吗?

  13. 13

    Unicode Python Windows控制台

  14. 14

    将Kafka Stream输入输出到控制台?

  15. 15

    将Java控制台输入作为语句运行

  16. 16

    尝试将SerialPort输入打印到控制台

  17. 17

    将Java控制台输入作为语句运行

  18. 18

    继续将joptionpane输入添加到控制台

  19. 19

    继续将joptionpane输入添加到控制台

  20. 20

    Eclipse-将文件输入控制台

  21. 21

    如果我在控制台窗口中单击,Windows 10控制台将停止运行

  22. 22

    将Python 3 Spyder控制台中的Windows 8代码页从cp1252更改为utf-8

  23. 23

    没有控制台的python用户输入

  24. 24

    在等待python输入时打印到控制台

  25. 25

    没有控制台的python用户输入

  26. 26

    将命令确认发送到Windows控制台

  27. 27

    在PyCharm中更改默认的Python / Flask控制台

  28. 28

    将Python控制台输出保存到Java变量

  29. 29

    将Python输出重定向到控制台窗口

热门标签

归档