प्रश्न का उत्तर है: अजगर में स्टैडर प्रिंट करने के लिए अलग-अलग तरीके हैं, लेकिन यह 1. पर निर्भर करता है) कि हम किस पायथन संस्करण का उपयोग कर रहे हैं 2.) हम क्या चाहते हैं सटीक उत्पादन।
प्रिंट और स्टोडर के लेखन कार्य के बीच अंतर:
stderr : stderr (मानक त्रुटि) पाइप है जो हर UNIX / Linux सिस्टम में बनाया गया है, जब आपका प्रोग्राम क्रैश हो जाता है और डिबगिंग जानकारी प्रिंट करता है (जैसे कि पायथन में एक ट्रेसबैक), यह stderr को जाता है पाइप।
प्रिंट : प्रिंट एक रैपर है जो इनपुट्स को प्रारूपित करता है (इनपुट अंत में तर्क और नई रेखा के बीच का स्थान होता है) और इसके बाद किसी दिए गए ऑब्जेक्ट के लेखन कार्य को कॉल करता है, डिफ़ॉल्ट रूप से दी गई वस्तु sys.stdout है, लेकिन हम कर सकते हैं फाइल पास करें यानी हम इनपुट को फाइल में भी प्रिंट कर सकते हैं।
Python2: अगर हम python2 का उपयोग कर रहे हैं तो
>>> import sys
>>> print "hi"
hi
>>> print("hi")
hi
>>> print >> sys.stderr.write("hi")
hi
Python2 अनुगामी अल्पविराम Python3 में एक पैरामीटर बन जाता है, इसलिए यदि हम प्रिंट के बाद नई रेखा से बचने के लिए अनुगामी अल्पविराम का उपयोग करते हैं, तो यह Python3 में प्रिंट की तरह दिखेगा ('टेक्स्ट टू प्रिंट', अंत = '') जो Python2 के तहत एक वाक्यविन्यास त्रुटि है। ।
http://python3porting.com/noconv.html
अगर हम python3 में sceario से ऊपर की जाँच करें:
>>> import sys
>>> print("hi")
hi
पायथन 2.6 के तहत एक फ़ंक्शन में प्रिंट बनाने के लिए भविष्य का आयात होता है। इसलिए किसी भी सिंटैक्स त्रुटियों और अन्य अंतरों से बचने के लिए हमें किसी भी फ़ाइल को शुरू करना चाहिए जहां हम भविष्य के आयात print_function से प्रिंट () का उपयोग करते हैं। भविष्य आयात केवल अजगर 2.6 के तहत काम करता है और बाद में, अजगर 2.5 के लिए तो और पहले आप दो विकल्प हैं। आप या तो अधिक जटिल प्रिंट को कुछ सरल में बदल सकते हैं, या आप एक अलग प्रिंट फ़ंक्शन का उपयोग कर सकते हैं जो Python2 और Python3 दोनों के तहत काम करता है।
>>> from __future__ import print_function
>>>
>>> def printex(*args, **kwargs):
... print(*args, file=sys.stderr, **kwargs)
...
>>> printex("hii")
hii
>>>
मामला: ध्यान दिया जाना चाहिए कि sys.stderr.write () या sys.stdout.write () (stdout (मानक आउटपुट) एक पाइप है जो हर UNIX / Linux सिस्टम में बनाया गया है) प्रिंट के लिए प्रतिस्थापन नहीं है, लेकिन हां हम इसे किसी मामले में एक विकल्प के रूप में उपयोग कर सकते हैं। प्रिंट एक रैपर है जो अंत में अंतरिक्ष और न्यूलाइन के साथ इनपुट को लपेटता है और लिखने के लिए लिखने के फ़ंक्शन का उपयोग करता है। यही कारण है कि sys.stderr.write () तेज है।
नोट: हम लॉगिंग का उपयोग करके ट्रेस और डीबग भी कर सकते हैं
#test.py
import logging
logging.info('This is the existing protocol.')
FORMAT = "%(asctime)-15s %(clientip)s %(user)-8s %(message)s"
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.warning("Protocol problem: %s", "connection reset", extra=d)
https://docs.python.org/2/library/logging.html#logger-objects