'आरटी' और 'डब्ल्यूटी' मोड में फाइलें खोलें


108

कई बार यहाँ SO पर मैंने लोगों को फ़ाइलों को पढ़ने और लिखने के लिए उपयोग करने rtऔर wtमोड्स देखा है ।

उदाहरण के लिए:

with open('input.txt', 'rt') as input_file:
     with open('output.txt', 'wt') as output_file: 
         ...

मैं मोड्स को डॉक्यूमेंटेड नहीं देखता , लेकिन चूंकि open()कोई एरर फेकता नहीं है - ऐसा लगता है कि यह उपयोग करने के लिए बहुत कानूनी है।

इसके लिए क्या है और बनाम wtबनाम का उपयोग करने के बीच कोई अंतर है ?wrtr

जवाबों:


193

tपाठ मोड को संदर्भित करता है। वहाँ कोई अंतर नहीं है rऔर rtया wऔर wtके बाद से पाठ मोड डिफ़ॉल्ट है।

यहाँ प्रलेखित :

Character   Meaning
'r'     open for reading (default)
'w'     open for writing, truncating the file first
'x'     open for exclusive creation, failing if the file already exists
'a'     open for writing, appending to the end of the file if it exists
'b'     binary mode
't'     text mode (default)
'+'     open a disk file for updating (reading and writing)
'U'     universal newlines mode (deprecated)

डिफ़ॉल्ट मोड 'r'(पाठ पढ़ने के लिए खुला है, का पर्यायवाची 'rt')।


4
पकड़ लिया, यह python3 डॉक्स में प्रलेखित है। इसलिए, मूल रूप से कोई फर्क नहीं है wtबनाम wऔर rtबनाम r- बस explicit is better than implicit?
alecxe

@alecxe ठीक है, के बाद से पाठ मोड डिफ़ॉल्ट है, वहाँ कोई अंतर नहीं है rऔर rt...
devnull

9
ध्यान दें कि wहमेशा के बराबर नहीं है wt। ऐसा एक मामला है gzip.openजहां बाइनरी मोड डिफ़ॉल्ट है, न कि टेक्स्ट मोड। संबंधित प्रश्न: stackoverflow.com/questions/42013083/…
कार्ल Ekerot

9

tपाठ मोड इंगित करता है, जिसका अर्थ है कि \nपात्रों मेजबान ओएस लाइन अंत में अनुवाद किया जाएगा जब एक फाइल करने के लिए लेखन, और फिर से वापस जब पढ़ने। ध्वज मूल रूप से केवल शोर है, क्योंकि पाठ मोड डिफ़ॉल्ट है।

इसके अलावा U, उन मोड फ्लैग सीधे मानक सी लाइब्रेरी के fopen()फ़ंक्शन से आते हैं , एक तथ्य जो कि के लिए python2 प्रलेखन के छठे पैराग्राफ में प्रलेखित है open()

जहां तक ​​मुझे पता है, tसी मानक का हिस्सा कभी नहीं रहा है और न ही है, इसलिए हालांकि सी लाइब्रेरी के कई कार्यान्वयन इसे वैसे भी स्वीकार करते हैं, कोई गारंटी नहीं है कि वे सभी करेंगे, और इसलिए कोई गारंटी नहीं है कि यह हर बिल्ड पर काम करेगा अजगर। यह बताता है कि क्यों python2 डॉक्स ने इसे सूचीबद्ध नहीं किया, और क्यों यह आम तौर पर वैसे भी काम करता था। Python3 डॉक्स इसे आधिकारिक बनाना।


4

'R' पढ़ने के लिए है, लिखने के लिए 'w' और 'a' को जोड़ने के लिए है।

बाइनरी मोड के रूप में 't' टेक्स्ट मोड को दर्शाता है।

एसओ पर कई बार मैंने देखा है कि लोग फाइलों को पढ़ने और लिखने के लिए आरटी और डब्ल्यूटी मोड का उपयोग करते हैं।

संपादित करें: क्या आप सुनिश्चित हैं कि आपने आरटी देखा है और आरबी नहीं?

ये कार्य आम तौर पर फोपेन फ़ंक्शन को लपेटते हैं जो यहां वर्णित है:

http://www.cplusplus.com/reference/cstdio/fopen/

जैसा कि आप देख सकते हैं कि यह द्विआधारी मोड में फ़ाइल को खोलने के लिए बी के उपयोग का उल्लेख करता है।

आपके द्वारा प्रदान किया गया दस्तावेज़ लिंक भी इस बी मोड का संदर्भ देता है:

'B' को लागू करना उन प्रणालियों पर भी उपयोगी है जो बाइनरी और टेक्स्ट फ़ाइलों को अलग-अलग तरीके से व्यवहार नहीं करते हैं, जहां यह प्रलेखन के रूप में कार्य करता है।


हाँ, यह स्पष्ट रूप से rt, जैसे stackoverflow.com/questions/10971033/… , या stackoverflow.com/questions/17127853/… आदि जानकारी के लिए धन्यवाद, जानकारी के लिए अच्छा है।
alecxe

इस लिंक में कि devnull 't' पाठ विकल्प प्रदान करता है, सूचीबद्ध है। मुझे आश्चर्य हुआ कि C ++ लिंक ने उस 't' विकल्प का भी उल्लेख नहीं किया है क्योंकि मुझे पूरा यकीन है कि मैंने सालों पहले लिखे सी fopen कोड में 'rt' और 'wt' विकल्पों का उपयोग किया था।
jussij

हाँ, इसीलिए मैंने पूछा है - यह मेरे लिए एक गैर-प्रलेखित फीचर जैसा था। उम्मीद है कि धागा भविष्य में किसी की मदद करेगा। एक बार फिर धन्यवाद।
alecxe

3

t के लिए इंगित करता है text mode

https://docs.python.org/release/3.1.5/library/functions.html#open

लिनक्स पर, वहाँ पाठ मोड और द्विआधारी मोड के बीच कोई अंतर नहीं है, तथापि, खिड़कियों में, वे धर्मान्तरित \nकरने के लिए \r\nजब पाठ मोड।

http://www.cygwin.com/cygwin-ug-net/using-textbinary.html


5
पायथन 3 में पाठ और बाइनरी फ़ाइल मोड (सभी प्लेटफार्मों पर) के बीच एक अतिरिक्त अंतर है। पाठ मोड में, readयूनिकोड स्ट्रिंग्स लौटाता है। बाइनरी मोड में, readएक bytesउदाहरण देता है । यदि आप Python 2 कोड को आगे की संगतता को ध्यान में रखते हुए लिखना चाहते हैं, तो आप Python 3 व्यवहार ( बनाम उदाहरणों के साथ ) प्राप्त करने के लिए io.openमानक के बजाय उपयोग कर सकते हैं । openunicodestr
ब्लैंकनाथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.