@Kender का एक वैकल्पिक समाधान
import os
os.path.dirname(os.path.normpath(yourpath))
जहां yourpathपथ आप के लिए माता-पिता चाहते है।
लेकिन यह समाधान सही नहीं है, क्योंकि यह उस मामले को नहीं संभालेगा जहां yourpathएक खाली स्ट्रिंग, या एक डॉट है।
यह अन्य समाधान इस कोने के मामले को और अच्छी तरह से हैंडल करेगा:
import os
os.path.normpath(os.path.join(yourpath, os.pardir))
यहां हर मामले के लिए आउटपुट (इनपुट पथ सापेक्ष है) मिल सकता है:
os.path.dirname(os.path.normpath('a/b/')) => 'a'
os.path.normpath(os.path.join('a/b/', os.pardir)) => 'a'
os.path.dirname(os.path.normpath('a/b')) => 'a'
os.path.normpath(os.path.join('a/b', os.pardir)) => 'a'
os.path.dirname(os.path.normpath('a/')) => ''
os.path.normpath(os.path.join('a/', os.pardir)) => '.'
os.path.dirname(os.path.normpath('a')) => ''
os.path.normpath(os.path.join('a', os.pardir)) => '.'
os.path.dirname(os.path.normpath('.')) => ''
os.path.normpath(os.path.join('.', os.pardir)) => '..'
os.path.dirname(os.path.normpath('')) => ''
os.path.normpath(os.path.join('', os.pardir)) => '..'
os.path.dirname(os.path.normpath('..')) => ''
os.path.normpath(os.path.join('..', os.pardir)) => '../..'
इनपुट पथ निरपेक्ष है (लिनक्स पथ):
os.path.dirname(os.path.normpath('/a/b')) => '/a'
os.path.normpath(os.path.join('/a/b', os.pardir)) => '/a'
os.path.dirname(os.path.normpath('/a')) => '/'
os.path.normpath(os.path.join('/a', os.pardir)) => '/'
os.path.dirname(os.path.normpath('/')) => '/'
os.path.normpath(os.path.join('/', os.pardir)) => '/'
os.path.dirnameइस के लिए समारोह है, कीa+=5-4तुलना में अधिक जटिल हैa+=1। प्रश्न केवल माता-पिता निर्देशिका का अनुरोध करता है, न कि मौजूद है या सही माता-पिता निर्देशिका को प्रतीकात्मक लिंक मानते हैं।