2015-06-09 13 views
11

के सेल आउटपुट में कंसोल टर्मिनल में प्रिंट न करें मैं टर्मिनल विंडो में प्रिंट करना चाहता हूं जो आईपीथॉन नोटबुक चलाता है और सेल आउटपुट में नहीं। सेल आउटपुट में प्रिंटिंग अधिक मेमोरी का उपभोग करती है और जब मैं print कॉल की पर्याप्त संख्या जारी करता हूं तो मेरे सिस्टम को धीमा कर देता है। संक्षेप में, मुझे डिजाइन द्वारा this व्यवहार पसंद है।आईपीथॉन नोटबुक

मैं कोशिश की है निम्नलिखित:

  1. मैं print का एक अलग क्रमपरिवर्तन और sys.stdout.write कॉल
  2. मैं मदद के बिना IPython नोटबुक प्रलेखन here, here और here को देखा
  3. मैं का उपयोग कर की कोशिश की है की कोशिश की this एक कामकाज के रूप में, लेकिन ऐसा लगता है कि यह केवल पायथन पर काम कर रहा है 2.7

उत्तर

11

आपको अपने आउटपुट को सिस्टम मानक आउटपुट डिवाइस पर रीडायरेक्ट करना होगा। यह आपके ओएस पर निर्भर करता है। मैक पर यह होगा:

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

उपरोक्त कोड को आईपीथॉन सेल में टाइप करें और इसका मूल्यांकन करें। बाद में सभी आउटपुट टर्मिनल में दिखाई देंगे।

+2

वहाँ कि उल्टा करने के लिए कोई तरीका है? और ipython stdout –

+2

पुनर्प्राप्त करें आप उदास कर सकते हैं पुनर्निर्देशन से पहले नोटबुक के 'stdout' के संदर्भ में सुरक्षित: 'nb_stdout = sys.stdout'। अब, आप आउटपुट को रीडायरेक्ट करेंगे। नोटबुक आउटपुट में वापस जाने के लिए बस लिखें: 'sys.stdout = nb_stdout'। एक क्लीनर समाधान [contextlib.redirect_stdout (new_target)] (https://docs.python.org/3.4/library/contextlib.html#contextlib.redirect_stdout) संदर्भ प्रबंधक का उपयोग करना होगा। – MaxPowers

+1

@MaxPowers क्या आपको पता है कि आपको विंडोज में क्या लिखना चाहिए? – Yaeli778

1

Windows पर, यह काम कर सकते हैं:

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

अरे आप @MaxPowers और पोस्टिंग का उत्तर कॉपी कर रहे हैं – Dilip

संबंधित मुद्दे