如何在stdout/stderr中捕获提示?

2024-10-03 15:29:35 发布

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

我试图在日志文件中记录用户的终端会话;非常简单,我为ghci(交互式Haskell)制作了一个Python包装器,如下所示:

#!/usr/bin/env python

import os

cmd = 'ghci 2>&1 | tee hs.log'
os.system(cmd)

但是,这只捕获打印给用户的内容,而不是用户输入的提示/内容。因此,如果会话看起来像:

$ ghci 2>$1 | tee hs.log
GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
Prelude> 1+2
3
Prelude> 3+4
7
Prelude>

hs.log只有:

$ cat hs.log
GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
3
7

如何在交互式终端会话期间捕获输出和输入?你知道吗


Tags: 用户cmdloghttp终端内容oshaskell
1条回答
网友
1楼 · 发布于 2024-10-03 15:29:35

可以使用^{}命令捕获输入和输出。你知道吗

cmd = 'script hs.log ghci'

注意,这捕获了终端的所有原始输入和输出。您将看到所有用户的编辑,如果程序是全屏的,您将看到它的所有转义序列来移动光标。有关详细信息,请参阅链接的文档。你知道吗

相关问题 更多 >