Kodokon kodokon.com

फ़ाइलें और मॉड्यूल: with, import, संगठन

with की मदद से फ़ाइलें साफ़-सुथरे ढंग से पढ़ें और लिखें, JSON का आदान-प्रदान करें और अपने कोड को आयात करने योग्य मॉड्यूल में संगठित करें।

10 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

फ़ाइलें पढ़ना और लिखना किसी वास्तविक प्रोग्राम की रोज़मर्रा की रोटी है: निर्यात, लॉग, कॉन्फ़िगरेशन। with कीवर्ड फ़ाइल खोलता है और उसका बंद होना सुनिश्चित करता है, भले ही ब्लॉक के बीच में कोई त्रुटि हो जाए। फ़ाइल खोलने का यही एकमात्र पेशेवर तरीका है: इसके बिना, भूला हुआ close() डेटा को दूषित कर सकता है या सिस्टम के संसाधन चुका सकता है।

PYTHON
lines = ["alpha", "beta", "gamma"]

with open("notes.txt", "w", encoding="utf-8") as f:
    for line in lines:
        f.write(line + "\n")

with open("notes.txt", encoding="utf-8") as f:
    content = f.read()

print(content)
'w' मोड सामग्री के ऊपर लिखकर लिखता है; बिना मोड के, आप पढ़ते हैं।

संरचित डेटा के लिए, अपना खुद का फ़ॉर्मैट न गढ़ें: मानक लाइब्रेरी का json मॉड्यूल डिक्शनरी और लिस्ट को टेक्स्ट में बदलता है, और वापस भी। यह प्रोग्राम, API और कॉन्फ़िगरेशन फ़ाइलों के बीच आदान-प्रदान का सार्वभौमिक फ़ॉर्मैट है।

PYTHON
import json

config = {"debug": True, "retries": 3}

with open("config.json", "w", encoding="utf-8") as f:
    json.dump(config, f, indent=2)

with open("config.json", encoding="utf-8") as f:
    loaded = json.load(f)

print(loaded["retries"])  # 3
json.dump संरचना लिखता है, json.load उसे दोबारा बना देता है।

एक मॉड्यूल बस एक .py फ़ाइल है: import billing billing.py को लोड करता है और उसकी सामग्री केवल एक बार चलाता है। अपने कोड को ज़िम्मेदारी के अनुसार संगठित करें - बिलिंग के लिए एक मॉड्यूल, भंडारण के लिए दूसरा - और import कथनों को फ़ाइल के शीर्ष पर रखें। if __name__ == "__main__" परीक्षण दो स्थितियों में अंतर करता है: सीधे चलाने पर, फ़ाइल इस ब्लॉक को निष्पादित करती है; आयात किए जाने पर, वह इसे अनदेखा कर देती है।

PYTHON
def compute_total(prices):
    return round(sum(prices), 2)

def main():
    print(compute_total([9.99, 4.5, 20.0]))

if __name__ == "__main__":
    main()
billing.py की सामग्री: कहीं भी आयात करने योग्य, सीधे चलाने योग्य।
BASH
python billing.py
इस तरह चलाई जाए तो फ़ाइल main() निष्पादित करती है; आयात की जाए तो कुछ नहीं करती।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. अकेले open() की तुलना में with open(...) का मुख्य लाभ क्या है?
    • फ़ाइल स्वतः बंद हो जाती है, त्रुटि की स्थिति में भी
    • फ़ाइल पढ़ना अधिक तेज़ होता है
    • फ़ाइल मौजूद न होने पर बन जाती है, चाहे कोई भी मोड हो
  2. "w" और "a" मोड के बीच क्या अंतर है?
    • "w" मौजूदा सामग्री के ऊपर लिख देता है, "a" अंत में जोड़ता है
    • "w" टेक्स्ट लिखता है, "a" बाइनरी लिखता है
    • "w" फ़ाइल बना देता है, "a" फ़ाइल न होने पर विफल हो जाता है
  3. if __name__ == "__main__" परीक्षण किसलिए है?
    • यह जाँचने के लिए कि फ़ाइल का नाम वाकई main.py है
    • किसी ब्लॉक को केवल तभी चलाने के लिए जब फ़ाइल सीधे शुरू की जाए
    • मॉड्यूल को अन्य फ़ाइलों द्वारा आयात किए जाने से रोकने के लिए