हाय सब से पहले आप कार्य समझना चाहिए os.path.abspath (पथ) और os.path.relpath (पथ)
संक्षेप में os.path.abspath (पथ) निरपेक्ष पथ के लिए एक सापेक्ष पथ बनाता है । और यदि प्रदान किया गया मार्ग स्वयं एक पूर्ण पथ है तो फ़ंक्शन उसी पथ को वापस करता है।
इसी तरह os.path.relpath (पथ) सापेक्ष पथ को एक पूर्ण पथ बनाता है । और यदि प्रदान किया गया पथ स्वयं एक सापेक्ष पथ है, तो फ़ंक्शन उसी पथ को वापस करता है।
नीचे दिए गए उदाहरण से आप उपरोक्त अवधारणा को ठीक से समझ सकते हैं :
मान लीजिए कि मेरे पास एक फ़ाइल input_file_list.txt है जिसमें मेरी अजगर स्क्रिप्ट द्वारा संसाधित की जाने वाली इनपुट फ़ाइलों की सूची है।
डी: \ सान्द्र \ input1.dic
डी: \ सान्द्र \ input2.dic
डी: \ Copyioconc \ input_file_list.txt
आप फ़ोल्डर संरचना ऊपर देखते हैं, तो input_file_list.txt में मौजूद है Copyofconc अजगर स्क्रिप्ट द्वारा संसाधित किया जा करने के लिए फ़ोल्डर और फ़ाइलों में मौजूद हैं सान्द्र फ़ोल्डर
लेकिन फ़ाइल input_file_list.txt की सामग्री नीचे दी गई है:
.. \ सान्द्र \ input1.dic
.. \ सान्द्र \ input2.dic
और मेरी अजगर स्क्रिप्ट डी: ड्राइव में मौजूद है ।
और input_file_list.txt फ़ाइल में प्रदान किया गया सापेक्ष पथ input_file_list.txt के पथ के सापेक्ष है है।
इसलिए जब अजगर लिपि वर्तमान कार्यशील निर्देशिका का उपयोग करेगी (os.getcwd () का उपयोग करें ) मार्ग प्राप्त करने के लिए का
जैसा कि मेरा सापेक्ष पथ input_file_list.txt के सापेक्ष है , जो "D: \ Copyofconc" है , मुझे वर्तमान कार्य निर्देशिका को "D: \ Copyofconc" में बदलना होगा ।
इसलिए मुझे os.chdir ('D: \ Copyofconc') का उपयोग करना होगा , इसलिए वर्तमान कार्यशील निर्देशिका "D: \ Copyofconc" होगी ।
अब फाइल input1.dic और input2.dic प्राप्त करने के लिए , मैं लाइनों को पढ़ूंगा ".. \ conc \ input1.dic" तब कमांड का उपयोग करेगा
input1_path = os.path.abspath ('.. \ conc \ input1.dic') (सापेक्ष पथ को निरपेक्ष पथ में बदलने के लिए। यहां वर्तमान कार्य निर्देशिका के रूप में "D: \ Copyofconc", फ़ाइल "।" conc \ input1 है। dic "D: \ Copyofconc" के सापेक्ष पहुँचा जा सकेगा)
इसलिए input1_path "D: \ conc \ input1.dic" होगा