<शरीर>
 
क्लोज़() विधि आपको फ़ाइल बंद करने की अनुमति देती है।

उदाहरण
फिन = ओपन ("input.txt") Fout = open("output.txt")    # फाइलों के साथ कुछ करें fout.close () फिन.क्लोज () यदि कोई मौजूदा फ़ाइल लिखने के लिए खोली जाती है, तो उसकी सामग्री नष्ट हो जाती है। कार्यक्रम की समाप्ति के बाद, सभी खुली हुई फ़ाइलें अपने आप बंद हो जाती हैं।
 

फ़ाइलें

फ़ाइल बाहरी मेमोरी में डेटा का एक सेट है जिसका एक नाम होता है। 

पायथन में दो प्रकार की फाइलें हैं:
- टेक्स्ट, जिसमें एक लाइन पर टूटा हुआ टेक्स्ट है; पाठ फ़ाइलों में विशेष वर्णों में से, केवल न्यूलाइन वर्ण हो सकते हैं (" ;);
- बाइनरी, जो बिना किसी प्रतिबंध के किसी भी बाइनरी डेटा को संग्रहीत करता है (उदाहरण के लिए, चित्र, ध्वनि, वीडियो, आदि)।

अगला, हम पाठ फ़ाइलों के साथ काम करने पर विचार करेंगे।

 

कार्यक्रम से फ़ाइल के साथ काम करने का सिद्धांत
तीन चरणों में होता है:
1. एक फ़ाइल खोलना;
2. फ़ाइल के साथ काम करें;
3. फ़ाइल को बंद करना।
ऑपरेशन के इस सिद्धांत को "सैंडविच सिद्धांत" कहा जाता है।

फ़ाइल खोलते समय, संचालन का तरीका इंगित किया जाता है: फ़ाइल के अंत में डेटा पढ़ना, लिखना या जोड़ना। खोली गई फ़ाइल अवरोधित है और अन्य प्रोग्राम इसे एक्सेस नहीं कर सकते हैं. फ़ाइल के साथ काम करने के बाद, प्रोग्राम से कनेक्शन तोड़ने के लिए आपको इसे बंद करना होगा. जब कोई फ़ाइल बंद हो जाती है, तो इस फ़ाइल में प्रोग्राम द्वारा किए गए सभी परिवर्तन डिस्क में लिखे जाते हैं।
open() फ़ंक्शन को एक फ़ाइल खोलने की अनुमति देता है और एक फ़ाइल वेरिएबल लौटाता है जिसका उपयोग फ़ाइल तक पहुँचने के लिए किया जा सकता है।
f = open(file_name, access_mode)
कहा पे:
- file_name - खोली जाने वाली फ़ाइल का नाम
- access_mode - फाइल ओपनिंग मोड। यह हो सकता है: पढ़ें, लिखें, आदि। डिफ़ॉल्ट मोड पढ़ा (आर) है जब तक कि अन्यथा निर्दिष्ट न हो। 
 
फ़ाइल खोलने के मोड की पूरी सूची
<तालिका संरेखण = "केंद्र" सीमा = "1" सेलपैडिंग = "1" सेलस्पेसिंग = "1" शैली = "चौड़ाई: 500 पीएक्स"> <सिर>
मोड विवरण
r केवल पढ़ने के लिए।
w केवल लिखने योग्य। निर्दिष्ट नाम के साथ नहीं मिलने पर एक नई फ़ाइल बना देंगे।
rb केवल पढ़ने के लिए (बाइनरी)।
wb केवल लिखने के लिए (बाइनरी)। निर्दिष्ट नाम के साथ नहीं मिलने पर एक नई फ़ाइल बना देंगे।
r+ पढ़ने और लिखने के लिए।
rb+ पढ़ने और लिखने के लिए (बाइनरी)।
w+ पढ़ने और लिखने के लिए। निर्दिष्ट नाम के साथ नहीं मिलने पर एक नई लिखने योग्य फ़ाइल बना देगा।
wb+ पढ़ने और लिखने के लिए (बाइनरी)। निर्दिष्ट नाम के साथ नहीं मिलने पर एक नई लिखने योग्य फ़ाइल बना देगा।
a नई सामग्री जोड़ने के लिए खुलता है। निर्दिष्ट नाम के साथ नहीं मिलने पर एक नई लिखने योग्य फ़ाइल बना देगा।
a+ नई सामग्री जोड़ने के लिए खुलता है। निर्दिष्ट नाम के साथ नहीं मिलने पर प्रविष्टि को पढ़ने के लिए एक नई फ़ाइल तैयार करेगा।
ab नई सामग्री जोड़ने के लिए खुलता है (बाइनरी)। निर्दिष्ट नाम के साथ नहीं मिलने पर एक नई लिखने योग्य फ़ाइल बना देगा।
ab+ नई सामग्री जोड़ने के लिए खुलता है (बाइनरी)। निर्दिष्ट नाम के साथ नहीं मिलने पर प्रविष्टि को पढ़ने के लिए एक नई फ़ाइल तैयार करेगा।

फ़ाइल से डेटा पढ़ना

पाठ फ़ाइल पढ़ते समय, बाइट्स की धारा एक के बाद एक क्रमिक रूप से प्रोग्राम इनपुट में प्रवेश करती है, इसलिए फ़ाइल डेटा तक अनुक्रमिक पहुँच प्रदान करती है। यानी, अगर हमें फ़ाइल से 10वां मान पढ़ना है, तो हमें पहले पिछले 9 को पढ़ना होगा।

फ़ाइल की एक पंक्ति को पढ़ने से रीडलाइन () विधि को निष्पादित करने की अनुमति मिलती है। इस विधि को फ़ाइल चर पर कहा जाता है। फिन = ओपन ("input.txt") s = Fin.readline()
रीड स्ट्रिंग पर विभिन्न विधियों को लागू किया जा सकता है, जैसे कीबोर्ड से पढ़ते समय उपयोग किए जाने वाले (split(), map(), आदि)। उदाहरण के लिए, यदि किसी फ़ाइल की एक पंक्ति में दो संख्याएँ रिक्त स्थान से अलग होती हैं, तो आप उन्हें निम्नानुसार गिन सकते हैं: फिन = ओपन ("input.txt") s = Fin.readline ()। विभाजन () # रिक्त स्थान पर विभाजन रेखा = ["2007", "2021"] ए, बी = मानचित्र (इंट, एस)         # सूची के सभी तत्वों के लिए int () विधि लागू करें,   # यानी कैरेक्टर स्ट्रिंग को नंबर में बदलें # ए, बी = इंट(एस[0], एस[1])   # यह ऊपर की रेखा के समान है # a, b = [int(x) for x in s] # जनरेटर के समान
read() विधि फ़ाइल की संपूर्ण सामग्री को पढ़ती है और एक स्ट्रिंग लौटाती है जिसमें '\n' अक्षर हो सकते हैं। यदि read() मेथड में एक पूर्णांक पैरामीटर पास किया जाता है, तो वर्णों की निर्दिष्ट संख्या से अधिक नहीं पढ़ा जाएगा। उदाहरण के लिए, आप read(1).
विधि का उपयोग करके फ़ाइल को बाइट दर बाइट पढ़ सकते हैं।
जब कोई फ़ाइल खोली जाती है, तो सूचक जो फ़ाइल में वर्तमान स्थान निर्धारित करता है, फ़ाइल की शुरुआत में सेट होता है और जब पढ़ा जाता है, डेटा पढ़ने के बाद स्थिति में स्थानांतरित हो जाता है। लिखते समय, सूचक को अगली मुक्त स्थिति में ले जाया जाता है।

फ़ाइल में डेटा लिखें

किसी फ़ाइल में डेटा लिखने के लिए write() विधि का उपयोग किया जाता है। संख्यात्मक डेटा को एक स्ट्रिंग में परिवर्तित किया जाना चाहिए। यह या तो format() विधि से या str().
विधि से किया जा सकता है
 

बहुपंक्ति फ़ाइलें

बहु-पंक्ति फ़ाइलों के साथ काम करते समय, आपको यह जानना होगा कि फ़ाइल में डेटा कब समाप्त हो जाता है। ऐसा करने के लिए, आप readline() विधियों की सुविधा का उपयोग कर सकते हैं: यदि फ़ाइल कर्सर फ़ाइल के अंत की ओर इशारा करता है, तो readline() विधि रिटर्न करती है खाली स्ट्रिंग, जिसे गलत बूलियन मान के रूप में माना जाता है: जबकि सच:     s = Fin.readline ()     यदि नहीं तो: तोड़ें   # यदि एक स्ट्रिंग पढ़ते समय एक खाली स्ट्रिंग प्राप्त होती है,   # लूप एक ब्रेक स्टेटमेंट के साथ समाप्त होता है     Print(s, end="")  नई पंक्ति को अक्षम करें, क्योंकि फ़ाइल से एक पंक्ति पढ़ते समय                       # न्यूलाइन कैरेक्टर "\n" सहेजा गया

 

बहुपंक्ति फ़ाइलों से डेटा पढ़ने के अन्य तरीके
1. तुरंत सूची में सभी डेटा। फिन = ओपन ("input.txt") list_strings = Fin.readlines()    # सभी पंक्तियों को एक बार में पढ़ें फिन.क्लोज () for s in list_strings:     प्रिंट (ओं, अंत = "")
2. निर्माण with-as का उपयोग करना। इस मामले में, फ़ाइल चक्र के अंत के बाद स्वचालित रूप से बंद हो जाती है। फिन के रूप में open("input.txt") के साथ:     एस के लिए फिन में:         प्रिंट (ओं, अंत = "") यह निर्माण सुनिश्चित करता है कि फ़ाइल बंद है। 


3. पायथन भाषा की शैली में तार पर पुनरावृति करने का एक तरीका (इस विधि का उपयोग करने की अनुशंसा की जाती है)। ऐसे में फाइल भी अपने आप बंद हो जाती है। खुले में एस के लिए ("input.txt"):     प्रिंट (ओं, अंत = "")

सिरिलिक फ़ाइल

यदि फ़ाइल में रूसी अक्षर हैं (127 से अधिक कोड वाला कोई भी वर्ण), तो आपको खोलते समय एन्कोडिंग निर्दिष्ट करनी होगी डेटा = खुला ("input.txt", "r", एन्कोडिंग="utf-8")