Assuming a Unix-like environment, you can capture all ttyinput and output with the command script:
$ 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 help utility!
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http:
....
....
>>> ^D
$ exit
Script done on Thu Aug 18 21:22:06 2016
If, as in the question example, Python is fully pipelined stdinand the goal is to capture the input pipe and output of Python, you can get closer with the command 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 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/.
....
....
, , .