2013-06-12 4 views
51

私はこの解決策を見てきましたが、特にPythonではそうではありませんでした。Python - ファイルパスからフォルダパスを抽出します

フルパスからファイルへのフォルダパスを取得したいと考えています。

たとえば、T:\Data\DBDesign\DBDesign_93_v141b.mdbとなります。T:\Data\DBDesign\DBDesign_93_v141b.mdbは含まれません)としたいと考えています。

私はこのような何かを試してみました:

existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb' 
wkspFldr = str(existGDBPath.split('\\')[0:-1]) 
print wkspFldr 

が、それは私にこのような結果を与えた:

私は( T:\Data\DBDesignである)必要との結果がでない
['T:', 'Data', 'DBDesign'] 

私のファイルへのパスをどのように得ることができますか?

ありがとうございました。

答えて

71

あなたはsplit機能のご利用にはほとんど存在しませんでした。あなたはちょうど次のように、文字列に参加する必要があります。

>>> '\\'.join(existGDBPath.split('\\')[0:-1]) 
'T:\\Data\\DBDesign' 

私はこれを行うにはos.path.dirname機能を使用することをお勧めします、が、あなただけの文字列を渡す必要があり、それはあなたのための作業をします。あなたは窓の上にいるようですので、abspath機能の使用も検討してください。例 -

>>> os.path.dirname(os.path.abspath(existGDBPath)) 
'T:\\Data\\DBDesign' 

あなたが分割された後に、ファイル名とディレクトリパスの両方をしたい場合は、次のように、あなたは、タプルを返すos.path.split機能を使用することができます。ここで

>>> os.path.split(os.path.abspath(existGDBPath)) 
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb') 
+0

ブリリアント、感謝します。これは非常に参考になりました。私はabspathオプションを使用します。 – Genspec

16

組み込みサブモジュールos.pathには、そのようなタスクのための機能があります。

import os 
os.path.dirname('T:\Data\DBDesign\DBDesign_93_v141b.mdb') 
36

os.pathモジュールを使用します。

>>> import os 
>>> existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb' 
>>> wkspFldr = os.path.dirname(existGDBPath) 
>>> print wkspFldr 
'T:\Data\DBDesign' 

あなたが先に行くと、あなたは、ファイル名の操作のいくつかの並べ替えを行う必要がある場合、それはすでにos.pathで実装されていますと仮定することができます。そうでなければ、おそらくこのモジュールをビルディングブロックとして使用する必要があります。

UPDATE

一つは、新開発のためのpathlibを使用することを検討すべきです。 Python3.4ではstdlibにありますが、それ以前のバージョンではavailable on PyPIです。このライブラリは、よりオブジェクト指向の方法を提供して、<opinion>のパスを操作し、</opinion>で読み込みとプログラムがはるかに簡単です。

>>> import pathlib 
>>> existGDBPath = pathlib.Path(r'T:\Data\DBDesign\DBDesign_93_v141b.mdb') 
>>> wkspFldr = existGDBPath.parent 
>>> print wkspFldr 
Path('T:\Data\DBDesign') 
0

は、コードは次のとおりです。ここにあなたの助けのために非常に多くの

import os 
existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb' 
wkspFldr = os.path.dirname(existGDBPath) 
print wkspFldr # T:\Data\DBDesign 
関連する問題