मैं पायथन (विंडोज पर) का उपयोग करके फ़ाइलों को कैसे लिख सकता हूं और लाइन चरित्र के यूनिक्स अंत का उपयोग कर सकता हूं?
जैसे कब कर:
f = खुला ('file.txt', 'w') एफ। राइट ('हैलो \ n') f.close ()
अजगर अपने आप बदल \n
जाता है \r\n
।
जवाबों:
देखें: आधुनिक तरीका: इस पृष्ठ पर newline = '' उत्तर का उपयोग करें ।
एंड-ऑफ-लाइन वर्णों के अनुवाद को रोकने के लिए फ़ाइल को बाइनरी के रूप में खोलें:
f = open('file.txt', 'wb')
पायथन मैनुअल का हवाला देते हुए:
विंडोज पर, मोड के लिए 'बी' संलग्न फ़ाइल को बाइनरी मोड में खोलता है, इसलिए 'आरबी', 'डब्ल्यूबी' और 'आर + बी' जैसे मोड भी हैं। विंडोज पर पायथन पाठ और बाइनरी फ़ाइलों के बीच अंतर करता है; जब डेटा पढ़ा या लिखा जाता है, तो टेक्स्ट फ़ाइलों में अंत-पंक्ति वर्ण स्वचालित रूप से थोड़े बदल जाते हैं। डेटा को फ़ाइल करने के लिए पर्दे के पीछे का यह संशोधन ASCII टेक्स्ट फ़ाइलों के लिए ठीक है, लेकिन यह JPEG या EXE फ़ाइलों की तरह ही द्विआधारी डेटा को भ्रष्ट कर देगा। ऐसी फ़ाइलों को पढ़ते और लिखते समय बाइनरी मोड का उपयोग करने के लिए बहुत सावधान रहें। यूनिक्स पर, यह मोड में एक 'बी' को जोड़ने के लिए चोट नहीं करता है, इसलिए आप इसे सभी बाइनरी फ़ाइलों के लिए प्लेटफ़ॉर्म-स्वतंत्र रूप से उपयोग कर सकते हैं।
Unix- शैली LF अंत-पंक्ति के टर्मिनेटर का उपयोग करने के newline=
लिए io.open () कीवर्ड पैरामीटर का उपयोग करें :
import io
f = io.open('file.txt', 'w', newline='\n')
यह पायथन 2.6+ में काम करता है। पायथन 3 में आप इसके बजाय अंतर्निहित open()
फ़ंक्शन के newline=
पैरामीटर का उपयोग कर सकते हैं io.open()
।
न्यूलाइन रूपांतरण को रोकने का पुराना तरीका, जो पायथन 3 में काम नहीं करता है, एंड-ऑफ-लाइन वर्णों के अनुवाद को रोकने के लिए फ़ाइल को बाइनरी मोड में खोलना है :
f = open('file.txt', 'wb') # note the 'b' meaning binary
लेकिन पायथन 3 में, बाइनरी मोड बाइट्स पढ़ेगा और वर्ण नहीं, इसलिए यह वह नहीं करेगा जो आप चाहते हैं। जब आप स्ट्रीम I / O करने की कोशिश करेंगे तो आपको शायद अपवाद मिलेगा। (उदाहरण के लिए "TypeError: 'str' बफर इंटरफ़ेस का समर्थन नहीं करता है")।
'\n'
निर्देशित करने के लिए newline सेट कर सकते हैं , यह इससे अधिक स्पष्ट है ''
, और मुझे लगता है कि इसे पढ़ना आसान है।
'\n'
की तुलना में स्पष्ट है ''
। फिर मुझे यह बताने के लिए एक टिप्पणी की आवश्यकता नहीं होगी कि कोड क्या कर रहा है :) लेकिन ध्यान रखें कि यह केवल फाइलों को लिखने के लिए सही है। फ़ाइलों को पढ़ते समय, newline='\n'
बिल्कुल वैसा ही नहीं है newline=''
, क्योंकि readlines()
यह केवल \n
पूर्व मामले में विभाजित होगा , लेकिन इसके साथ newline=''
सार्वभौमिक न्यूलाइन हैंडलिंग भी करेगा लेकिन फिर भी डेटा में फ़ाइल से वास्तविक नईलाइन्स लौटाएगा। सलाह के लिये धन्यवाद! पायथन टेस्ट प्रोग्राम
'\n'
पहले से स्विच किए गए समान को देखने के बारे में थोड़ी चिंता करते हैं , तो आप यूनिकोड कोडपॉइंट का उपयोग कर सकते हैं (सुनिश्चित करें कि एन्कोडिंग utf-8 है या कुछ और संगत है)। with open('file.txt', 'w', encoding='utf-8', newline='\u000A')
; पुनश्च परिणाम किसी भी newline='\n'
संस्करण से अलग नहीं है , यह सिर्फ अगर कोई और अधिक आराम चाहता है।
फ़ाइल खोलते समय आपको बाइनरी छद्म मोड का उपयोग करना होगा।
f = open('file.txt', 'wb')