2016-05-31 12 views
0

Mit glob2 und o würde ich das Verzeichnis '/a/b/' den Dateipfad gegeben wie '/a/b/c/xyz.txt'Wie kann ich den Pfadnamen des Ordners zwei Verzeichnisse vor einer Datei erhalten? mit <code>/*</code> und <code>/**</code> in glob2, aber nicht rückwärts durch übergeordnete Verzeichnisse

Ich habe in der Lage (rekursiv) nach vorne durch die Verzeichnisse bewegen. Ich möchte keine regulären Ausdrücke verwenden oder teilen. Gibt es einen einfachen Weg, dies mit glob und/oder os zu tun?

+2

'os.path.dirname (os.path.dirname ("/a/b/c/xyz.txt "))'? –

+2

Ich würde wirklich rsplit empfehlen, obwohl '' /a/b/c/xyz.txt".rsplit ("/", 2) [0] ' –

+0

Sie haben Recht - ich denke, rsplit macht am meisten Sinn. Es ist prägnant und leicht für mich, später zu lesen und zu verstehen. – user391339

Antwort

2

Warum glob?

dir_path = file_path.split('/') 
what_i_want = '/' + dir_path[10] + '/' + dir_path[1] + '/' 

Sie können dies auch tun, indem Sie den Index des dritten Schrägstrich zu finden, mit der Rückkehr eines jeden Anruf als „Start“ Argument zur nächsten.

third_slash = file_path.index('/', file_path.index('/', file_path.index('/')+1) +1) 
what_i_want = file_path[:third_slash+1] 
+0

Ich stimme zu Glob macht in diesem Zusammenhang keinen Sinn ... –