Os.path.basename () और os.path.dirname () के बीच अंतर क्या है?


139

बीच क्या अंतर है os.path.basename()और os.path.dirname()?

मैंने पहले ही जवाब खोज लिए और कुछ लिंक पढ़ लिए, लेकिन समझ नहीं आया। क्या कोई सरल स्पष्टीकरण दे सकता है?

जवाबों:


273

दोनों फ़ंक्शन os.path.split(path)पैथनेम pathको एक जोड़ी में विभाजित करने के लिए फ़ंक्शन का उपयोग करते हैं ; (head, tail)

os.path.dirname(path)समारोह पथ के सिर देता है।

जैसे: का dirname '/foo/bar/item'है '/foo/bar'

os.path.basename(path)समारोह पथ की पूंछ देता है।

जैसे: '/foo/bar/item'रिटर्न का आधार'item'

प्रेषक: http://docs.python.org/2/library/os.path.html#os.path.basename


24
याद रखें कि यदि आप के itemसाथ प्रतिस्थापित करते हैं item/, जो एक निर्देशिका है, तो os.path.split('foo/bar/item/')वापस लौटता है ('foo/bar/item', '')
jkdev

1
यदि पथ एक फ़ाइल है, तो क्या होगा, कहते हैं, "foo.bar"?
झाओगंग

4
@ jkdev हाँ, यदि आप एक मार्ग में अंतिम निर्देशिका नाम प्राप्त करना चाहते हैं, तो आपको उपयोग करना चाहिए:os.path.basename(os.path.dirname(path))
tli2020

@ZhaoGang यदि संपूर्ण पथ केवल एक फ़ाइल नाम है, तो os.path.basename (file_name) फ़ाइल नाम लौटाता है: यहाँ 'foo.bar', और os.path.dirname (file_name) एक रिक्त स्ट्रिंग देता है '':।
जकदेव

4

ऊपर ब्रेनो द्वारा जो उल्लेख किया गया था, उसे संक्षेप में बताने के लिए

कहें कि आपके पास फ़ाइल के लिए पथ वाला एक चर है

path = '/home/User/Desktop/myfile.py'

os.path.basename(path) स्ट्रिंग लौटाता है 'myfile.py'

तथा

os.path.dirname(path)स्ट्रिंग लौटाता है '/home/User/Desktop'(अनुगामी स्लैश के बिना / ')

इन कार्यों का उपयोग तब किया जाता है जब आपको फ़ाइल नाम / निर्देशिका नाम प्राप्त करना होता है जिसे पूर्ण पथ नाम दिया जाता है।

यदि फ़ाइल पथ केवल फ़ाइल नाम है (जैसे कि path = '/home/User/Desktop/myfile.py'आपके पास बस है myfile.py), तो os.path.dirname(path)खाली स्ट्रिंग लौटाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.