मैं यहां व्यक्त की गई कई राय के साथ कुछ हद तक असहमत हूं, print >> f
अनावश्यक है और इसे f.write
के पक्ष में टालना चाहिए।
print
और file.write
काफी अलग संचालन हैं। file.write
बस एक फ़ाइल में एक स्ट्रिंग लिखता है। print
"टेक्स्ट के रूप में stdout करने के लिए मान प्रस्तुत करें" की तरह है। स्वाभाविक रूप से, पाठ के रूप में एक स्ट्रिंग को प्रस्तुत करने का परिणाम केवल स्ट्रिंग है, इसलिए print >> f, my_string
और f.write(my_string)
लगभग अदला-बदले (एक नई लाइन के अतिरिक्त को छोड़कर) हैं। लेकिन file.write
और print
के बीच आपकी पसंद सामान्य रूप से आप जो कर रहे हैं उसके आधार पर होनी चाहिए; क्या आप एक फाइल को एक स्ट्रिंग लिख रहे हैं, या आप एक फाइल में मूल्य प्रस्तुत कर रहे हैं?
निश्चित रूप से print
सख्ती से आवश्यक नहीं है, जिसमें आप इसे file.write
के साथ कार्यान्वित कर सकते हैं। लेकिन फिर file.write
कड़ाई से जरूरी नहीं है, क्योंकि आप फाइल डिस्क्रिप्टर से निपटने के लिए इसे os
में संचालन के साथ कार्यान्वित कर सकते हैं। वास्तव में वे विभिन्न स्तरों पर संचालन कर रहे हैं, और आपको अपने उपयोग के लिए जो भी अधिक उपयुक्त है उसका उपयोग करना चाहिए (आमतौर पर स्तर के पास के पास के दूसरे स्तर पर काम कर रहा है, या उच्चतम स्तर जो आपके रास्ते में नहीं मिलता है)।
मुझे लगता है कि print >> f
वाक्यविन्यास काफी भयानक है, और यह वास्तव में एक अच्छा उदाहरण है कि क्यों print
एक समारोह होना चाहिए था। यह पायथन 3 में काफी सुधार हुआ है। लेकिन यदि आप पाइथन 2 कोड लिख रहे हैं, तो आप print >> f, thing1, thing2, thing3, ...
से print(thing1, thing2, thing3, file=f)
को कनवर्ट करने के लिए आसान है, जहां से आप रोल रोल करते हैं print
के प्रतिपादन के बराबर करने के लिए अपना स्वयं का कोड और फिर f.write(text)
पर कॉल करें। मुझे पूरा यकीन है कि पाइथन 2 से पायथन 3 तक सेमी-स्वचालित कनवर्टर भी आपके लिए रूपांतरण करेगा, अगर आप print >> f
फॉर्म से बचें तो यह संभवतः नहीं कर सका।
नीचे पंक्ति: stdout (या फ़ाइल में) मानों को प्रस्तुत करने के लिए print
का उपयोग करें। फ़ाइल में टेक्स्ट लिखने के लिए f.write
का उपयोग करें।
यह स्पष्ट होने के लिए पाइथोनिक है। '।लिखना() '' –
से मेरा इरादा स्पष्ट रूप से व्यक्त करता है यदि मैं गलत हूं, तो मुझे सही करें, लेकिन नए पायथन (3.x) संस्करण प्रिंट के साथ एक * फ़ंक्शन * (विशेष वाक्यविन्यास कथन निर्माण नहीं) और इस प्रकार उत्तरार्द्ध उन पर भी काम नहीं करेगा? (मैंने वास्तव में पाइथन का उपयोग नहीं किया है ... 2.6ish।) –
@pst: बहुत अच्छा बिंदु। 'लिखने()' विधि का उपयोग करने के लिए बेहतर है। – voithos