Gen*_*pec 95 python directory file extract 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
Run Code Online (Sandbox Code Playgroud)
但它给了我这样的结果:
['T:', 'Data', 'DBDesign']
Run Code Online (Sandbox Code Playgroud)
这不是我要求的结果T:\Data\DBDesign
.
关于如何获取文件路径的任何想法?
Suk*_*lra 113
你几乎在那里使用了这个split
功能.你只需要加入字符串,如下所示.
>>> import os
>>> '\\'.join(existGDBPath.split('\\')[0:-1])
'T:\\Data\\DBDesign'
Run Code Online (Sandbox Code Playgroud)
虽然,我建议使用该os.path.dirname
函数来执行此操作,但您只需要传递字符串,它就会为您完成工作.因为,你似乎在Windows上,考虑使用该abspath
功能.一个例子 -
>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
Run Code Online (Sandbox Code Playgroud)
如果在分割后同时需要文件名和目录路径,则可以使用os.path.split
返回元组的函数,如下所示.
>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
Run Code Online (Sandbox Code Playgroud)
Set*_*ton 77
使用os.path模块:
>>> import os
>>> existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
>>> wkspFldr = os.path.dirname(existGDBPath)
>>> print wkspFldr
'T:\Data\DBDesign'
Run Code Online (Sandbox Code Playgroud)
您可以继续并假设如果您需要进行某种文件名操作,那么它已经实现了os.path
.如果没有,您仍可能需要将此模块用作构建块.
UPDATE
应该考虑使用pathlib进行新开发.它位于Python3.4的stdlib中,但在早期版本的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')
Run Code Online (Sandbox Code Playgroud)
Dan*_*lan 35
内置子模块os.path具有执行该任务的功能.
import os
os.path.dirname('T:\Data\DBDesign\DBDesign_93_v141b.mdb')
Run Code Online (Sandbox Code Playgroud)
这是代码:
import os
existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = os.path.dirname(existGDBPath)
print wkspFldr # T:\Data\DBDesign
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
131675 次 |
最近记录: |