如何从Python中的文件路径中提取文件夹路径?

时间:2013-06-12 04:11:13

标签: python file path directory extract

我想获得从完整路径到文件的文件夹路径。

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

关于如何获取文件路径的任何想法?

6 个答案:

答案 0 :(得分:103)

你几乎在那里使用了split功能。你只需要加入字符串,如下所示。

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

虽然我建议使用os.path.dirname函数来执行此操作,但您只需要传递字符串,它就会为您完成工作。因为,您似乎在Windows上,请考虑使用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')

答案 1 :(得分:63)

使用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中实现了。如果没有,您仍可能需要将此模块用作构建块。

<强>更新

应考虑使用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')

答案 2 :(得分:33)

内置子模块os.path具有执行该任务的功能。

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

答案 3 :(得分:2)

以下是代码:

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

答案 4 :(得分:0)

这是我的小工具助手,用于分割路径int文件和路径标记:

import os    
# usage: file, path = splitPath(s)
def splitPath(s):
    f = os.path.basename(s)
    p = s[:-(len(f))-1]
    return f, p

答案 5 :(得分:0)

任何试图在ESRI GIS表格字段计算器界面中执行此操作的人都可以使用 Python解析器来执行此操作:

PathToContainingFolder =

"\\".join(!FullFilePathWithFileName!.split("\\")[0:-1])

这样

\ Users \ me \ Desktop \ New folder \ file.txt

成为

\ Users \ me \ Desktop \ New文件夹