यह थोड़ा भ्रामक है। open()
मोड तर्क के रूप में किसी भी चरित्र को स्वीकार करता है, जबकि आप एक वैध पास करते हैं i.e .: "w,r,b,+,a"
।
इस प्रकार आप लिख सकते हैं: open("fname", "w+ANYTHINGYOUWANT")
। यह फ़ाइल को open("fname", "w+")
के रूप में खोल देगा। और open("fname", "rANYTHINGYOUWANT")
। फ़ाइल को open("fname", "w+")
के रूप में खुल जाएगा।
के बारे में "यू" झंडा:
मानक fopen के अतिरिक्त() को महत्व देता मोड 'यू' या 'आरयू' हो सकता है। पायथन आमतौर पर सार्वभौमिक न्यूलाइन समर्थन के साथ बनाया जाता है; 'यू' की आपूर्ति फ़ाइल को एक टेक्स्ट फ़ाइल के रूप में खोलती है, लेकिन लाइनों को में से किसी भी द्वारा समाप्त किया जा सकता है: यूनिक्स एंड-ऑफ़-लाइन कन्वेंशन '\ n', मैकिंतोश सम्मेलन 'आर', या विंडोज सम्मेलन '\ r \ n'। इन सभी बाहरी प्रतिनिधित्व को पायथन प्रोग्राम द्वारा '\ n' के रूप में देखा जाता है। यदि पाइथन सार्वभौमिक न्यूलाइन के बिना बनाया गया है तो 'यू' के साथ एक मोड का समर्थन सामान्य टेक्स्ट मोड जैसा ही है। ध्यान दें कि फ़ाइल ऑब्जेक्ट्स को भी खोला गया है में न्यूलाइन नामक एक विशेषता है जिसका कोई मूल्य नहीं है (यदि न्यूलाइन अभी तक नहीं देखी गई है), '\ n', '\ r', '\ r \ n', या एक tuple में देखा गया सभी न्यूलाइन प्रकार शामिल हैं।
आप अजगर दस्तावेज में पढ़ सकते हैं के रूप में https://docs.python.org/2/library/functions.html#open
संपादित करें:
डी: एक फ़ाइल के रूप में अस्थायी निर्दिष्ट करता है। यह हटा दिया जाता है जब अंतिम फ़ाइल सूचक बंद है।
जैसा कि आप @ tmr232 के लिंक में पढ़ सकते हैं।
सी, एन, टी, एस, आर, टी, और डी मोड विकल्प माइक्रोसॉफ्ट एक्सटेंशन fopen के लिए और _fdopen और जहां एएनएसआई पोर्टेबिलिटी वांछित
है नहीं किया जाना चाहिए रहे हैं इसके अलावा अद्यतन:
मैं एक बग के रूप में घटना प्रस्तुत करने का प्रस्ताव है, क्योंकि एक फ़ाइल को खोलने के रूप में ध्वज "आर" के साथ ही यानी पढ़ते हैं, फिर/के माध्यम से क्लोस के बाद उन्हें हटा सकते हैं इसे "डी" जैसे एक चरित्र को जोड़ना, यहां तक कि गलती से एक गंभीर सुरक्षा समस्या है, मुझे लगता है।
लेकिन, अगर इसमें कुछ अपरिहार्य कार्यक्षमता है, तो कृपया मुझे सूचित करें।
'खुला (' text.txt ',' rD ') 'मेरे लिए कोई त्रुटि नहीं उठाता है, हालांकि बंद होने पर फ़ाइल हटाई नहीं जाती है। मैं वास्तव में हैरान हूं कि यदि सही है, तो यह व्यवहार [दस्तावेज नहीं है] (https://docs.python.org/2/library/functions.html#open)। हालांकि 'यू' ध्वज दस्तावेज है। – rth
बस इसे विंडोज़ पर दोहराया। यह वास्तव में बहुत अजीब है। – tmr232
मैंने एक पल पहले एक ही गलती की थी। उल्लेख है [यहां] (https://github.com/python/cpython/blob/2.7/Objects/fileobject.c#L209)। Fileobject में और आईओ नहीं। – tmr232