फ़ाइल के बीच क्या अंतर है और पायथन में खोलें? मुझे कब उपयोग करना चाहिए? (कहें कि मैं 2.5 में हूं)पायथन - फ़ाइल बनाम खुले
उत्तर
आपको हमेशा open()
का उपयोग करना चाहिए।
documentation राज्यों के रूप में:
जब एक फ़ाइल खोलने, इसका इस्तेमाल करने के लिए खुला() इस निर्माता सीधे लागू करने के बजाय बेहतर है। फ़ाइल अधिक परीक्षण प्रकार टाइप करने के लिए उपयुक्त है (उदाहरण के लिए, लेखन "isinstance (f, फ़ाइल)")।
इसके अलावा, file()
has been removed पायथन 3.0 के बाद से।
कार्यात्मक रूप से, दोनों समान हैं; open
वैसे भी file
पर कॉल करेगा, इसलिए वर्तमान में अंतर शैली का विषय है। Python docsopen
का उपयोग करने की सलाह देते हैं।
फ़ाइल खोलते समय, फ़ाइल कन्स्ट्रक्टर को सीधे आमंत्रित करने के बजाय खुले() का उपयोग करना बेहतर होता है।
कारण यह है कि भविष्य के संस्करणों में वे एक ही (open
एक कारखाने समारोह है, जो पथ इसे खोलने के आधार पर विभिन्न प्रकार की वस्तुओं रिटर्न हो जाएगा) होने की गारंटी नहीं है।
खुला पहले से ही एक कारखाना समारोह है, इसलिए कार्यात्मक मतभेद हैं (उदाहरण के लिए विरासत, इन्सिंस्टेंस() आदि) – Brian
दो कारण: "इसे करने का एक तरीका होना चाहिए" और file
का पाइथन दर्शन दूर जा रहा है।
file
वास्तविक प्रकार है (उदाहरण के लिए file('myfile.txt')
इसका निर्माता कह रहा है)। open
एक कारखाना फ़ंक्शन है जो एक फ़ाइल ऑब्जेक्ट लौटाएगा।
अजगर 3.0 file
में किया जा रहा से स्थानांतरित करने के लिए जा रहा है एक अंतर्निहित io
पुस्तकालय (कुछ बफ़र पाठकों के साथ जावा के समान, आदि)
क्या कारण हैं? – Matt
केवल कभी खुला प्रयोग कई वर्गों द्वारा कार्यान्वित किया जा करने के लिए() फाइल खोलने के लिए। फ़ाइल() वास्तव में 3.0 में हटा दी जा रही है, और इस समय इसे हटा दिया गया है। उनके पास एक तरह का अजीब रिश्ता था, लेकिन फ़ाइल() अब जा रही है, इसलिए अब चिंता करने की कोई आवश्यकता नहीं है।
निम्नलिखित पायथन 2.6 दस्तावेज़ों से है। [ब्रैकेट सामान] मेरे द्वारा जोड़ा गया।
फ़ाइल खोलते समय, यह [फ़ाइल()] कन्स्ट्रक्टर को सीधे आमंत्रित करने के बजाय खुले() का उपयोग करना बेहतर है। फ़ाइल (उदाहरण के लिए, (च, फ़ाइल isinstance लेखन)
, और अधिक परीक्षण टाइप करने के लिए अनुकूल है, हालांकि खुला() वर्तमान में फ़ाइल के लिए एक अन्य नाम() आप खुले उपयोग करना चाहिए() इस वजह से है भविष्य में बदल सकता है।
यह अब 2.5 –
file
एक प्रकार, int
या list
की तरह है। open()
फ़ाइलों को खोलने के लिए एक समारोह है, और एक file
वस्तु वापस आ जाएगी।
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
जैसा कि आप देख सकते हैं, वहाँ के लिए एक अच्छा कारण नहीं है:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
यह जब आप फ़ाइल का उपयोग करना चाहिए का एक उदाहरण है:
यह खुला जब आप का उपयोग करना चाहिए का एक उदाहरण है दोनों मौजूद हैं, और दोनों के लिए स्पष्ट उपयोग-मामला।
में सच नहीं है, आम तौर पर, फाइलों को 'साथ' कथन के साथ खोला जाना चाहिए। 'खुले (फ़ाइल नाम,' आर ') के साथ f: \ f में लाइन के लिए \ \ प्रक्रिया (रेखा) '। यह स्पष्ट बंद से बचाता है। पायथन 2.6 और ऊपर मूल रूप से 'साथ' कथन का समर्थन करते हैं। पायथन 2.5 में, आपको अपने कोड के शीर्ष पर '__future__ आयात से _statement'' जोड़ना होगा। – IceArdor
क्या आपने दूसरे उदाहरण में अंतर्निहित नाम को फिर से परिभाषित नहीं किया था? – planetp
@planetp, दूसरा उदाहरण सिर्फ फ़ाइल वर्ग से विरासत में मिलता है। मुझे लगता है कि यह अजीब बात है कि यह कम मामले में है, लेकिन इस तरह यह मूल बिल्टिन प्रकारों (जैसे ऑब्जेक्ट, स्ट्र, सूची, ...) – yoniLavi
- 1. फ़ाइल पर खुले एक्सप्लोरर
- 2. फ़ोल्डर ब्राउज़र संवाद जैसे खुले फ़ाइल संवाद
- 3. ऐपेंड मोड में फ़ाइल खोलना: खुले() एपीआई
- 4. पायथन में एक फ़ाइल को प्रिंट करना: रीडायरेक्ट बनाम प्रिंट की फ़ाइल तर्क बनाम
- 5. फ़ाइल बनाम ब्लॉक बनाम
- 6. पायथन: 'आयात *' बनाम execfile
- 7. पायथन: चेक फ़ाइल लॉक है
- 8. एनएसएनएनयू खुले
- 9. खुले प्रकार
- 10. सॉकेट डिस्क्रिप्टर बनाम फ़ाइल डिस्क्रिप्टर
- 11. Django सार मॉडल बनाम सरल पायथन मिश्रण बनाम पायथन एबीसी
- 12. आयरनपीथन बनाम पायथन .NET
- 13. पायथन असमानताओं:! = बनाम नहीं ==
- 14. पायथन: os.path.exists बनाम os.path.isdir
- 15. पायथन: ओपनएमपीआई बनाम। RabbitMQ
- 16. पायथन: string.uppercase बनाम string.ascii_uppercase
- 17. जावा बनाम पायथन
- 18. पायथन - calendar.timegm() बनाम time.mktime()
- 19. पायथन - डॉक्टेस्ट बनाम unittest
- 20. पायथन बनाम जावा?
- 21. पायथन सेट बनाम सूची
- 22. पायथन: बाइटियर बनाम सरणी
- 23. पायथन: repr बनाम बैकक्वोट
- 24. पायथन: फ़ाइल
- 25. सी: opendir और खुले
- 26. पायथन 2 बनाम पायथन 3 - urllib प्रारूप
- 27. वीबी 6 में खुले फ़ाइल संवाद का उपयोग कैसे करें?
- 28. दो खुले फ़ाइल तालिका में एक ही प्रविष्टि
- 29. बिना खुले फ़ाइल (वास्तव में) इसे लॉक कर रहा है?
- 30. डिफ़ॉल्ट खुले फ़ाइल संवाद पथ को कैसे बदलें
यह परेशान है, क्योंकि प्रलेखन "राज्य() कन्स्ट्रक्टर पाइथन 2.2 में नया है। पिछली वर्तनी, खुली() को संगतता के लिए बनाए रखा गया है, और फ़ाइल() के लिए उपनाम है।" चूंकि मैंने दस साल पहले आरटीएफएम का फैसला किया था, और प्रकार और कक्षाओं के एकीकरण के बहुत शौकीन हो गए, मैंने कभी भी खुले() को कभी भी उपयोग नहीं किया। इसके अलावा, मुझे अभी भी लगता है कि टाइप कन्स्ट्रक्टर पथ तर्क द्वारा स्थित ऑब्जेक्ट जैसी ऑब्जेक्ट को वापस करने का तरीका और मोड तर्क में अनुरोध के रूप में व्यवहार करने का अधिक स्पष्ट तरीका है। मैं विशेष रूप से इस तरह महसूस करता हूं जब देवों के स्पष्ट इरादे को 2 ओपन 4 कॉम्पैक्ट बनाए रखा गया था। – umeboshi