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?
谢谢。
你几乎在那里使用split
function。 你只需要joinstring,如下所示。
>>> '\\'.join(existGDBPath.split('\\')[0:-1]) 'T:\\Data\\DBDesign'
虽然,我会build议使用os.path.dirname
函数来做到这一点,你只需要传递string,它会为你做的工作。 因为,你似乎在窗户上,也考虑使用abspath
function。 一个例子 –
>>> 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