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