2017-06-11 6 views
2

私は非常にプログラミングに加えてPythonにも新しく、私はフォルダパスをスライスしたい。例えば、私の元のパスがある場合:どのようにPythonでファイルパスをスライスする

C:/Users/arul/Desktop/jobs/project_folder/shots/shot_folder/elements/MexicoCity-Part1/ 

私はこのようなパスを取得したい:

C:/Users/arul/Desktop/jobs/project_folder/shots/shot_folder/ 

あなたがpathlibを使用することができパイソン

+0

何か試しましたか? [Stack Overflow](https://stackoverflow.com/help/how-to-ask)は、質問をするのに役立ちますので、コミュニティはあなたを助けてうれしいです – tschale

答えて

0

あなただけelementsに分割したい場合は、これを使って。このアプローチの

>>> path = 'C:/Users/arul/Desktop/jobs/project_folder/shots/shot_folder/elements/MexicoCity-Part1/' 
>>> path.split('elements')[0] 
'C:/Users/arul/Desktop/jobs/project_folder/shots/shot_folder/' 

一つの欠点は、あなたがあなたのパスを複数回に単語elementsが発生した場合、それは失敗するだろうということです。その場合、次のようなことができます:

>>> '/'.join(path.split('/')[:-3]) + '/' 
'C:/Users/arul/Desktop/jobs/project_folder/shots/shot_folder/' 

あなたが必要とするパスの深さを知っていると仮定します。

+0

@arul乾杯。この回答が役に立たれたら、それを記入して質問を閉じることを検討してください。 :) –

+0

私の解決策を見てください@arul – void

+0

この回答は受け入れてはいけません。 @Coldspeedパスに別のファイルセパレータがある場合はどうしますか?できるか\または/ – void

4

でこれを行う方法を共有してくださいモジュール:

このモジュールには、非常に便利な処理方法がたくさんありますパス:あなたの問題はまた、このようparts使用して解決することができます。

print('/'.join(pth.parts[:-2])) 

のpython 2.7で、あなたはos.pathを使用して独自のparts機能を構築できます。

from os import path 

pth = 'C:/Users/arul/Desktop/jobs/project_folder/shots/shot_folder/' 

def parts(pth): 
    ret = [] 
    head, tail = path.split(pth) 
    if tail != '': 
     ret.append(tail) 
    while head != '': 
     head, tail = path.split(head) 
     ret.append(tail) 
    return ret[::-1] 

ret = path.join(*parts(pth)[:-2]) 
print(ret) # C:/Users/arul/Desktop/jobs/project_folder 
+0

hiroに感謝しますが、これをPython 2.7で実行したい.13。 – arul

+0

ohh okありがとうございます。 – arul

-1

あなたはこのような何かを行うことができます。

folder = 'C:/Users/arul/Desktop/jobs/project_folder/shots/shot_folder/elements/MexicoCity-Part1/' 

folder.rsplit('/', 3)[0] 

str.rsplit()は、基本的には、区切り文字列(右から開始)で区切られた文字列内の単語のリストを返します。

この方法の詳細については、documentationをご覧ください。

+0

これを試していただきありがとうございます – arul

+0

@arulよろしくお願いします。 – Sid

関連する問題