जवाबों:
आपको हमेशा उपयोग करना चाहिए open()।
जैसा कि प्रलेखन में कहा गया है:
किसी फ़ाइल को खोलते समय, सीधे इस निर्माण को लागू करने के बजाय खुले () का उपयोग करना बेहतर होता है। फ़ाइल प्रकार परीक्षण के लिए अधिक उपयुक्त है (उदाहरण के लिए, "आइंस्टीनेंस (एफ, फ़ाइल)" लिखना)।
इसके अलावा, पायथन 3.0 के बाद से file() हटा दिया गया है ।
दो कारण: "वहाँ ऐसा करने का एक तरीका होना चाहिए" का अजगर दर्शन और fileदूर हो रहा है।
fileवास्तविक प्रकार है (उदाहरण के file('myfile.txt')लिए इसके निर्माता को बुला रहा है)।openएक फैक्ट्री फ़ंक्शन है जो किसी फ़ाइल ऑब्जेक्ट को लौटाएगा।
अजगर में 3.0 fileएक ioपुस्तकालय में कई वर्गों (कुछ बफ़र पाठकों के साथ जावा के समान,) द्वारा कार्यान्वित किया जा रहा है एक अंतर्निहित होने से आगे बढ़ने जा रहा है ।
file()एक प्रकार है, एक इंट या सूची की तरह। open()फ़ाइलों को खोलने के लिए एक फ़ंक्शन है, और वापस आ जाएगाfile ऑब्जेक्ट ।
यह एक उदाहरण है जब आपको खुले का उपयोग करना चाहिए:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
यह एक उदाहरण है जब आपको फ़ाइल का उपयोग करना चाहिए:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
जैसा कि आप देख सकते हैं, दोनों के अस्तित्व के लिए एक अच्छा कारण है, और दोनों के लिए एक स्पष्ट उपयोग-मामला है।
withबयान के साथ खोला जाना चाहिए । with open(filename, 'r') as f: \ for line in f: \ process(line)। यह स्पष्ट निकट से बचा जाता है। पायथन 2.6 और इसके बाद के संस्करण मूल रूप से withबयान का समर्थन करते हैं । पायथन 2.5 में, आपको from __future__ import with_statementअपने कोड के शीर्ष पर जोड़ना होगा ।
fileवर्ग विशेष विधियों से सुसज्जित था जो कि जब भी एक withबयान के माध्यम से फ़ाइल को खोला जाता है, स्वचालित रूप से कहा जाता है । ये विशेष विधियां यह सुनिश्चित करती हैं कि फ़ाइल ठीक से और सुरक्षित रूप से खोली और बंद हो।
कार्यात्मक रूप से, दो समान हैं; वैसे भी openफोन करेंगे file, इसलिए वर्तमान में यह अंतर शैली का विषय है। अजगर डॉक्स उपयोग करने की अनुशंसा open।
फ़ाइल खोलते समय, सीधे फ़ाइल कंस्ट्रक्टर को लागू करने के बजाय खुले () का उपयोग करना बेहतर होता है।
कारण यह है कि भविष्य के संस्करणों में वे एक ही होने की गारंटी नहीं है ( openएक कारखाना फ़ंक्शन बन जाएगा, जो अलग-अलग प्रकार की वस्तुओं को उसके रास्ते के आधार पर लौटाता है)।
फ़ाइलें खोलने के लिए केवल कभी-कभी खुले () का उपयोग करें। फ़ाइल () वास्तव में 3.0 में निकाली जा रही है, और इसे फिलहाल हटा दिया गया है। उनके पास एक प्रकार का अजीब संबंध है, लेकिन फ़ाइल () अब जा रही है, इसलिए अब चिंता करने की कोई आवश्यकता नहीं है।
निम्नलिखित पायथन 2.6 डॉक्स से है। [ब्रैकेट सामान] मेरे द्वारा जोड़ा गया।
किसी फ़ाइल को खोलते समय, इस [फ़ाइल ()) को सीधे बनाने के बजाय खुले () का उपयोग करना बेहतर होता है। फ़ाइल प्रकार परीक्षण के लिए अधिक उपयुक्त है (उदाहरण के लिए, लेखन आइंस्टीनेंस (एफ, फ़ाइल)
श्री वैन रोसुम के अनुसार, हालांकि खुला () वर्तमान में फ़ाइल के लिए एक उपनाम है () आपको खुले () का उपयोग करना चाहिए क्योंकि यह भविष्य में बदल सकता है।