2012-08-06 36 views
9

Có cách nào để khả năng ghi nhật ký của IPython bao gồm đầu ra cũng như đầu vào không?Đăng nhập đầu ra IPython?

Đây là những gì một file log trông giống như hiện nay:

#!/usr/bin/env python 
# 2012-08-06.py 
# IPython automatic logging file 
# 12:02 
# ================================= 
print "test" 

Tôi muốn có một dòng hơn xuất hiện:

#!/usr/bin/env python 
# 2012-08-06.py 
# IPython automatic logging file 
# 12:02 
# ================================= 
print "test" 
# test 

(các # là vì tôi cho rằng là cần thiết để ngăn chặn vi phạm tính năng của logplay của IPython)

Tôi cho rằng điều này có thể sử dụng sổ ghi chép IPython, nhưng trên ít nhất một máy tôi cần, tôi giới hạn ed to ipython 0.10.2.

EDIT: Tôi muốn biết cách tự động thiết lập điều này, tức là trong tệp cấu hình. Ngay bây giờ cấu hình của tôi trông giống như

from time import strftime 
import os 
logfilename = strftime('ipython_log_%Y-%m-%d')+".py" 
logfilepath = "%s/%s" % (os.getcwd(),logfilename) 

file_handle = open(logfilepath,'a') 
file_handle.write('########################################################\n') 
out_str = '# Started Logging At: '+ strftime('%Y-%m-%d %H:%M:%S\n') 
file_handle.write(out_str) 
file_handle.write('########################################################\n') 
file_handle.close() 

c.TerminalInteractiveShell.logappend = logfilepath 
c.TerminalInteractiveShell.logstart = True 

nhưng chỉ định c.TerminalInteractiveShell.log_output = True dường như không có ảnh hưởng đến

Trả lời

8

Có tùy chọn -o cho %logstart:

-o: log also IPython's output. In this mode, all commands which 
    generate an Out[NN] prompt are recorded to the logfile, right after 
    their corresponding input line. The output lines are always 
    prepended with a '#[Out]# ' marker, so that the log remains valid 
    Python code. 

PHỤ LỤC: Nếu bạn đang ở trong một phiên ipython tương tác cho quá trình ghi nhật ký đã được bắt đầu, trước tiên bạn phải dừng ghi nhật ký và sau đó khởi động lại:

In [1]: %logstop 

In [2]: %logstart -o 
Activating auto-logging. Current session state plus future input saved. 
Filename  : ./ipython.py 
Mode   : backup 
Output logging : True 
Raw input log : False 
Timestamping : False 
State   : active 

Quan sát rằng, sau khi khởi động lại, "Ghi nhật ký đầu ra" bây giờ là "Đúng".

+1

Giải pháp dường như đang thực hiện việc này trong tập lệnh khởi động, như được mô tả ở đây: http://wiki.ipython.org/Cookbook/DatedLog (đây là giải pháp được cung cấp trong http://stackoverflow.com/questions/11836612/where-in-in-what-context-is-ipythons-configuration-file-được thực hiện là gì? lq = 1) – keflavich

Các vấn đề liên quan