मैंने सोचा कि print
कथन ने sys.stdout
(डिफ़ॉल्ट रूप से) ऑब्जेक्ट पर सिर्फ .write() विधि कहा है।पायथन 'प्रिंट' कथन .write() विधि को कॉल नहीं करता है?
लेकिन इस तरह की एक उपवर्ग लिखा था:
import time
class logfile(file):
def __init__(self, *args, **kwargs):
file.__init__(self, *args, **kwargs)
def write(self, logstr):
if logstr[-1] != '\n': logstr += '\n'
super(logfile, self).write(time.strftime('%D-%T ') + str(logstr))
यह अगर मैं एक logfile
वस्तु बना सकते हैं और write
विधि कॉल, लेकिन जब logfile
की आवृत्ति sys.stdout
वस्तु को बदलने की कोशिश कर काम करने के लिए लगता है यह ऐसा लगता है कि print
write
पर कॉल नहीं कर रहा है। शायद writelines
?
इस का उपयोग करते हुए:
#!/usr/bin/python
from myfile import logfile
import sys
sys.stdout = logfile('somefile', 'w')
print 'this is a test'
sys.stdout.write('this is another test')
मेरे आउटपुट फ़ाइल 'somefile' शामिल हैं:
this is a test
08/10/11-16:59:47 this is another test
आप आउटपुट फ़ाइल में पहली पंक्ति देख सकते हैं कि मैं क्या print
करने की कोशिश की और दूसरी पंक्ति है है sys.stdout.write
मैंने सोचा print
सिर्फ write
विधि कहा जाता है- स्पष्ट रूप से मुझे याद आ रही है मूलभूत कुछ।
क्या http://stefaanlippens.net/redirect_python_print मदद कर रहा है? – Evpok
'प्रिंट' का' stdout' का अपना संदर्भ है। – agf
@Evpok मुझे लगता है कि अगर वह सामान्य लॉगिंग का उपयोग करने के बजाय प्रिंट रीडायरेक्ट करने का प्रयास कर रहा है तो शायद वह पूर्व-मौजूदा 'प्रिंट' कथन को संशोधित नहीं करना चाहता है। – agf