2016-04-12 10 views
5

में एक .txt फ़ाइल में प्रिंट आउटपुट को निर्देशित करना क्या सभी प्रिंट आउटपुट को पायथन में एक txt फ़ाइल में सहेजने का कोई तरीका है? आइए कहें कि मेरे पास मेरे कोड में ये दो पंक्तियां हैं और मैं प्रिंट आउटपुट को output.txt नामक फ़ाइल में सहेजना चाहता हूं।पायथन 3

print ("Hello stackoverflow!") 
print ("I have a question.") 

मैं output.txt फ़ाइल को रोकने के लिए करने के लिए

Hello stackoverflow! 
I have a question. 

उत्तर

13

print एक file कीवर्ड तर्क है, जहां तर्क का मूल्य एक फ़ाइल धारा है दे दो चाहते हैं।

print("Hello stackoverflow!", file=open("output.txt", "a")) 
print("I have a question.", file=open("output.txt", "a")) 

Python documentation about print से:: हम open समारोह का उपयोग कर एक फ़ाइल धारा बना सकते हैं

file तर्क एक write(string) विधि के साथ एक वस्तु होना चाहिए; यदि यह मौजूद नहीं है या None, sys.stdout का उपयोग किया जाएगा।

और the documentation for open:

ओपन file और एक इसी फ़ाइल वस्तु लौटने। अगर फ़ाइल खोला नहीं जा सकता है, तो OSError उठाया गया है।

"a" रूप open का दूसरा तर्क का अर्थ है "संलग्न" - दूसरे शब्दों में, फ़ाइल की मौजूदा सामग्री ओवरराइट नहीं किया जाएगा। यदि आप चाहते हैं कि फाइल को ओवरराइट किया जाए, तो "w" का उपयोग करें।

+0

इस उत्तर के लिए धन्यवाद। एक बार कोड (पहली प्रिंट) की पहली पंक्ति निष्पादित हो जाने पर, संबंधित फ़ाइल वास्तव में दूसरे प्रिंट कमांड को निष्पादित करने से पहले बंद हो जाती है। सही? क्या एक ही फाइल में सभी सामानों को एक साथ प्रिंट करने का कोई तरीका है लेकिन यह सुनिश्चित करना कि लूप के दूसरे दौर से पहले फ़ाइल बंद हो जाती है? दूसरे शब्दों में, मैं लूप के चारों ओर प्रत्येक दौर के लिए फाइल को बंद करने के साथ एक ही फाइल में कुछ चीजों को प्रिंट करना चाहता हूं। धन्यवाद, – Allan

+1

@Allan, आपको फ़ाइल खोलने के लिए 'with' कथन का उपयोग करना चाहिए। यह एक 'फ़ाइल' ऑब्जेक्ट बनाता है और इसे पूरे ब्लॉक में खोलता रहता है, फिर अंत में इसे बंद कर देता है। पहला उदाहरण देखें [इस आलेख में] (http://preshing.com/20110920/the-python-with-statement-by-example/)। यदि आपको और प्रश्न पूछने हों तो मुझे बता दें! –

5

आप एक फ़ाइल "output.txt"


    import sys 
    sys.stdout = open('output.txt','wt') 
    print ("Hello stackoverflow!") 
    print ("I have a question.") 
+3

क्या ऐसा करने का कोई तरीका है और कंसोल में टेक्स्ट भी दिखाएं? तो साथ ही कंसोल और फ़ाइल में प्रिंट करें? मैं अपने सभी प्रगति प्रिंट स्टेटमेंट्स को देखने में सक्षम होना चाहता हूं, इसलिए मुझे पता है कि प्रोग्राम इसके निष्पादन में कहां है, और समस्या निवारण कथन, लेकिन इसमें सभी टेक्स्ट टेक्स्ट को डंप भी है। – Korzak

0

में stdout अनुप्रेषित कर सकते हैं प्रवेश मॉड्यूल

def init_logging(): 
    rootLogger = logging.getLogger('my_logger') 

    LOG_DIR = os.getcwd() + '/' + 'logs' 
    if not os.path.exists(LOG_DIR): 
     os.makedirs(LOG_DIR) 
    fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2")) 
    rootLogger.addHandler(fileHandler) 

    rootLogger.setLevel(logging.DEBUG) 

    consoleHandler = logging.StreamHandler() 
    rootLogger.addHandler(consoleHandler) 

    return rootLogger 

का प्रयोग करें लकड़हारा प्राप्त करें:

logger = init_logging() 

और प्रवेश/उत्पादन शुरू (आईएनजी):

logger.debug('Hi! :)')