Solusi alternatif @kender
import os
os.path.dirname(os.path.normpath(yourpath))
di mana yourpathjalur yang Anda inginkan untuk orang tua.
Tetapi solusi ini tidak sempurna, karena tidak akan menangani kasus di mana yourpathstring kosong, atau sebuah titik.
Solusi lain ini akan menangani kasus sudut ini dengan lebih baik:
import os
os.path.normpath(os.path.join(yourpath, os.pardir))
Di sini keluaran untuk setiap kasus yang dapat ditemukan (Jalur input relatif):
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)) => '../..'
Jalur input mutlak (jalur Linux):
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.dirnameadalah fungsi untuk ini, sukaa+=5-4lebih berbelit daripadaa+=1. Pertanyaan yang diminta hanya direktori induk, bukan apakah ada atau direktori induk sebenarnya dengan asumsi tautan simbolik menghalangi