【问题标题】:Is there a way to save both python stdout and stdin to file using only bash?有没有办法只使用 bash 将 python stdout 和 stdin 保存到文件中?
【发布时间】:2016-12-13 05:26:51
【问题描述】:

有一些 shell 快捷方式可以将 python 标准输出保存到文件中,如下所示:

python code.py > file
python code.py >> file
python code.py &> file

但这不会保存我在 Ubuntu 16.04 LTS 中通过终端输入的标准输入。 有没有什么方法可以保存文本,就像我们只使用 shell 命令执行 python 脚本结束时显示的终端一样?

【问题讨论】:

  • 也许这就是你要找的东西:man7.org/linux/man-pages/man1/script.1.html
  • sys.stdin 怎么样,你可以在循环中使用并读取标准输入并写入标准输出
  • @ReutSharabani 我的代码要求我将KeyboardInterrupt 退出程序并且脚本没有保存到文件中。所以我使用-f 标志进行刷新。它保存成功,但只有cat typescript 在终端上给出了正确的结果。如果使用文本编辑器打开该文件,则不会提供 utf-8 输出(我的终端的编码)。对于不可打印的字符(TAB、ESC 等),有硬编码的文本元素。我如何获得 utf-8?
  • @mithatkonuk 我想要所有print 语句和stderr 语句(如果有的话)以及我的输入。我不想标准输出每个标准错误语句。
  • 看看script命令。

标签: python bash file stdout stdin


【解决方案1】:

如果你想记录与终端的交互,你可以使用script

script 为终端上显示的所有内容制作打字稿。 这对于需要一份硬拷贝记录的学生很有用
作为作业证明的交互式会话,作为打字稿文件 以后可以用 lpr(1) 打印出来。

如果给出参数文件,脚本将对话保存在此
文件。如果没有给出文件名,对话将保存在文件中
打字稿。

【讨论】:

    【解决方案2】:

    您可以将标准输入保存到一个变量中,将此变量写入您的文本文件,然后您可以将此变量传递给您想要使用它的任何程序。

    read input
    $input > textfile
    $input | program
    

    【讨论】:

    • 我希望 stdout、stdin 和 stderr 以顺序方式输出,就像它在代码执行中出现的那样
    • 所以基本上,你想要你的终端协议吗?
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多