Python – 从文件path中提取文件夹path

我已经看到了这个解决scheme,但不是专门针对Python。

我想只得到从完整path到文件的文件夹path。

例如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 )。

任何想法如何我可以得到我的文件的path?

谢谢。

你几乎在那里使用splitfunction。 你只需要joinstring,如下所示。

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

虽然,我会build议使用os.path.dirname函数来做到这一点,你只需要传递string,它会为你做的工作。 因为,你似乎在窗户上,也考虑使用abspathfunction。 一个例子 –

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

如果你想分割文件名和目录path,你可以使用os.path.split函数返回一个元组,如下所示。

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

使用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实现。 如果没有,你仍然可能需要使用这个模块作为构build模块。

UPDATE

应该考虑使用pathlib进行新的开发。 它位于Python3.4的stdlib中,但在PyPI上可用于早期版本。 这个库提供了一个更加对象化的方法来操作path<opinion> ,并且使用</opinion>更容易阅读和编程。

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

内置子模块os.path具有用于该任务的function。

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

这里是代码:

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