2015-06-09 31 views
11

Tôi muốn in vào cửa sổ đầu cuối chạy IPython Notebook và không vào đầu ra của ô. In vào đầu ra của tế bào tiêu thụ nhiều bộ nhớ hơn và làm chậm hệ thống của tôi khi tôi phát hành một số lượng đáng kể các cuộc gọi print. Về bản chất, tôi muốn this hành vi theo thiết kế.In vào thiết bị đầu cuối bảng điều khiển không vào đầu ra của máy tính xách tay IPython

Tôi đã thử những điều sau đây:

  1. Tôi đã thử một hoán vị khác nhau của printsys.stdout.write cuộc gọi
  2. tôi nhìn vào tài liệu Máy tính xách tay IPython here, herehere mà không cần sự giúp đỡ
  3. Tôi đã cố gắng sử dụng this là giải pháp thay thế nhưng có vẻ như chỉ hoạt động trên Python 2.7

Trả lời

11

Bạn phải chuyển hướng đầu ra của bạn đến thiết bị đầu ra tiêu chuẩn của hệ thống. Điều này phụ thuộc vào hệ điều hành của bạn. Trên máy Mac có thể là:

import sys 
sys.stdout = open('/dev/stdout', 'w') 

Nhập mã ở trên vào ô IPython và đánh giá nó. Sau đó tất cả các đầu ra sẽ hiển thị trong thiết bị đầu cuối.

+2

Có cách nào để đảo ngược thế? và khôi phục stdout ipython –

+2

Bạn có thể, ví dụ: an toàn tham chiếu đến 'stdout' của máy tính xách tay trước khi chuyển hướng:' nb_stdout = sys.stdout'. Bây giờ, bạn sẽ chuyển hướng đầu ra. Để quay lại đầu ra của sổ ghi chép, chỉ cần viết: 'sys.stdout = nb_stdout'. Một giải pháp sạch sẽ là sử dụng [contextlib.redirect_stdout (new_target)] (https://docs.python.org/3.4/library/contextlib.html#contextlib.redirect_stdout) trình quản lý ngữ cảnh. – MaxPowers

+1

@MaxPowers Bạn có biết bạn nên viết gì trong Windows không? – Yaeli778

1

Trên Windows, điều này có thể làm việc:

import sys 
sys.stdout = open(1, 'w') 
+0

Xin chào, bạn được sao chép câu trả lời của @MaxPowers và đăng – Dilip

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