फाइल डिस्क्रिप्टर सीधे OS कर्नेल द्वारा प्रदान की गई फाइलों के साथ काम करने के लिए एक निम्न-स्तरीय सुविधा है। एक फाइल डिस्क्रिप्टर एक पूर्णांक है जो प्रत्येक प्रक्रिया के लिए कर्नेल द्वारा रखी गई खुली फाइलों की एक तालिका में खुली फाइल की पहचान करता है। कई सिस्टम कॉल फ़ाइल डिस्क्रिप्टर को स्वीकार करते हैं, लेकिन उनके साथ काम करना सुविधाजनक नहीं है, आमतौर पर निश्चित-चौड़ाई वाले बफ़र्स की आवश्यकता होती है, कुछ स्थितियों में कई पुन:प्रयास और मैन्युअल त्रुटि प्रबंधन की आवश्यकता होती है।
फ़ाइल ऑब्जेक्ट Python वर्ग हैं जो फ़ाइलों के साथ काम करने को अधिक सुविधाजनक और कम त्रुटि-प्रवण बनाने के लिए फ़ाइल डिस्क्रिप्टर को लपेटते हैं। उदाहरण के लिए, वे एरर-हैंडलिंग, बफरिंग, लाइन-बाय-लाइन रीडिंग प्रदान करते हैं और कचरा एकत्र होने पर बंद हो जाते हैं।
-
बिल्ट-इन ओपन () एक फ़ाइल नाम लेता है और एक नया पायथन फ़ाइल ऑब्जेक्ट देता है। ध्यान दें कि यह os.open()
. से अलग है -
os.open() एक फ़ाइल नाम लेता है और एक नया फ़ाइल डिस्क्रिप्टर देता है। यह फ़ाइल डिस्क्रिप्टर अन्य निम्न-स्तरीय कार्यों, जैसे os.read() और os.write(), या os.fdopen() को पास किया जा सकता है।
-
os.fdopen() एक मौजूदा फ़ाइल डिस्क्रिप्टर लेता है और इसके चारों ओर एक पायथन फ़ाइल ऑब्जेक्ट बनाता है। यह फ़ाइल डिस्क्रिप्टर को पूर्ण फ़ाइल ऑब्जेक्ट में कनवर्ट करता है। सी कोड या एपीआई के साथ इंटरफेस करते समय यह उपयोगी होता है जो केवल निम्न-स्तरीय फ़ाइल डिस्क्रिप्टर बनाते हैं।
तो ये दोनों फ़ंक्शन पायथन में काम करने के लिए सिस्टम कार्यक्षमता के अधिक करीब प्रदान करते हैं।