मैं एक फाइल करने के लिए अजगर कोड का एक हिस्सा के एसटीडी उत्पादन प्रवेश करना चाहते हैं '' के साथ अजगर का उपयोग कर फ़ाइल लॉग इन करने, का उपयोग करते हुए बयान 'के साथ':लॉगिंग stdout और stderr बयान
with log_to_file('log'):
# execute code
सबसे आसान है जिस तरह से इस मैन्युअल log_to_file
परिभाषित करने के लिए ऐसा करने के लिए, जैसे:
import sys
class log_to_file():
def __init__(self, filename):
self.f = open(filename, 'wb')
def __enter__(self):
self.stdout = sys.stdout
self.stderr = sys.stderr
sys.stdout = self.f
sys.stderr = self.f
def __exit__(self, type, value, traceback):
sys.stdout = self.stdout
sys.stderr = self.stderr
या वहाँ एक अंतर्निहित वर्ग कि यह पहले से ही कर सकते हैं?
पर एक नजर डालें [इस] (http://stackoverflow.com/questions/616645/how-do-i-duplicate-sys-stdout-to-a-log-file-in-python) सवाल। ऐसा लगता है कि आप क्या खोज रहे हैं। ध्यान दें कि उत्तरों में से एक मौजूदा लॉगिंग मॉड्यूल का उपयोग करता है, जबकि अन्य मल्टीप्रोसेसिंग का उपयोग करते हैं। – thegrinner
आपका दृष्टिकोण अच्छा है, भले ही आप '__exit__'' पर फ़ाइल बंद करना याद रखें :) मुझे यह पसंद है। – tito
आप किस तरह के उत्तर की उम्मीद करते हैं? मैं इसे एक टिप्पणी के रूप में दूंगा: नहीं, कोई अंतर्निहित कक्षा नहीं है जो ऐसा करती है। –