2016-05-18 10 views
3

パスをそのコンポーネントにpythonの方法で変換しようとしています。ファイルパスをそのコンポーネントにきれいに分割しました

例:

path = /drive/dir/anotherdir/finaldir/ 

アプローチ:

splitted = path.split(os.path.sep) 
>>> ['', 'drive', 'dir', 'anotherdir', 'finaldir', ''] 

募集出力:

>>> ['drive', 'dir', 'anotherdir', 'finaldir'] 

クリーナーがあります空の文字列がないようにしますか?スライスするのは簡単ですが、不要なノイズが加わります。私ははos.pathモジュールに見て、唯一のスプリッタは、次のとおりです。

os.path.split(path) 
os.path.splitdrive(path) 
os.path.splitext(path) 
os.path.splitunc(path) 

PS:私はintto考慮していなかった解決策がある場合、私はちょうど確認する解決策を捜しているわけではありません。

+4

'/ drive/dir/anotherdir/finaldir /'は* 'drive/dir/anotherdir/finaldir /'と違っていますか? –

+0

ポイントを取得しないでください...私は彼らが異なっていることを知っている、あなたは私に教えて何をしていますか? – user1767754

+0

私は、あなたが求めている結果が分かりにくく、なぜそれが問題なのかを説明してくれることを期待していると伝えようとしています。 –

答えて

2

これはおそらく試してみますか?言っていることMark Ransom

path.strip('/').split('/') 
1

はあなた募集出力pathを取ることができる可能な値与えられ、無効であることです。パスについて話すとき、OSはパス文字列をファイルまたはディレクトリに解決する方法に関するいくつかの規則を持っています。

は、以下のコードを検討:

def toComponents(path): 
    return path.split('/') 


def fromComponents(components): 
    return '/'.join(components) 

# specialToComponents takes a path and returns 
# the components relative to the/folder or 
# if the path is relative, it returns the components 
# Use at your own risk. 
def specialToComponents(path): 
    return path.strip('/').split('/') 

は、2つのパスがあると仮定:

  • path = /drive/dir/anotherdir/finaldir/これはリーダファイルが内部に配置されているOSを指示絶対パスであります/フォルダ、pathフォルダ内など、finaldir/
  • path = drive/dir/anotherdir/finaldir/これは関連性が高いive path。これは、通常、プログラムの現在のディレクトリからの相対的な意味です。現在のディレクトリに移動し、次にdriveに行き、次にdirに移動し、finaldir/まで続きます。

あなたがしようとしているのは、絶対パスを相対パスとして読み込み、相対パスを相対パスとして読み込みます。これは、誰かがあなたのコードを絶対パス。

関連する問題