【问题标题】:Capture interactive Python shell output along with input捕获交互式 Python shell 输出和输入
【发布时间】:2016-08-19 02:06:49
【问题描述】:

我想捕获 Python shell 输出以及发送给它的输入。例如,在以下用例中,help() 也应该出现在 capture.log 的第 4 行:

$ echo "help()" | python3 -i > capture.log   2>&1
$ cat capture.log
Python 3.4.2 (default, Oct  8 2014, 10:45:20) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Welcome to Python 3.4's help utility!

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/3.4/tutorial/.
....
....

【问题讨论】:

    标签: python bash shell stdout stdin


    【解决方案1】:

    假设一个类 Unix 环境,您可以使用script 命令捕获所有tty 输入和输出:

    $ script capture.log
    Script started, output file is capture.log
    $ python3
    # python interactive session here
    $ exit
    Script done, output file is capture.log
    $ cat capture.log
    Script started on Thu Aug 18 21:21:55 2016
    $ python3
    Python 3.5.2 (default, Jul 21 2016, 07:25:19) 
    [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> help()
    
    Welcome to Python 3.5's help utility!
    
    If this is your first time using Python, you should definitely check out
    the tutorial on the Internet at http://docs.python.org/3.5/tutorial/.
    
    ....
    ....
    >>> ^D
    $ exit
    
    Script done on Thu Aug 18 21:22:06 2016
    

    如果像问题示例中那样,Python 完全由 stdin 管道驱动,并且目标是捕获管道输入和 Python 输出,则可以使用 tee 命令接近:

    $ echo "help()" | tee capture.log | python3 -i >> capture.log 2>&1
    $ cat capture.log 
    help()
    Python 3.5.2 (default, Jul 21 2016, 07:25:19) 
    [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    Welcome to Python 3.5's help utility!
    
    If this is your first time using Python, you should definitely check out
    the tutorial on the Internet at http://docs.python.org/3.5/tutorial/.
    ....
    ....
    

    如您所见,输入和输出都被捕获,但它们没有对齐。

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 2020-12-01
      • 1970-01-01
      • 2021-03-21
      • 2017-11-23
      相关资源
      最近更新 更多