Python 从没有文件名的完整文件路径提取目录路径
我有一个函数,它以字符串形式接收完整的文件路径,目标是只返回文件路径而不返回文件名。目标还包括处理所有文件类型,如Windows、Unix等。我必须将Python 从没有文件名的完整文件路径提取目录路径,python,python-3.x,file,Python,Python 3.x,File,我有一个函数,它以字符串形式接收完整的文件路径,目标是只返回文件路径而不返回文件名。目标还包括处理所有文件类型,如Windows、Unix等。我必须将\替换为/,这对于Windows文件路径很好,但对于Unix路径似乎没有必要 def get_path(file): file = file.replace('\\', '/') path = os.path.dirname(file) return path 有没有办法在不替换反斜杠的情况下提取路径? 下面是两个输入路径
\
替换为/
,这对于Windows文件路径很好,但对于Unix路径似乎没有必要
def get_path(file):
file = file.replace('\\', '/')
path = os.path.dirname(file)
return path
有没有办法在不替换反斜杠的情况下提取路径?
下面是两个输入路径字符串示例
Windows:'c:\\Program Files\\user\\file1.txt'
Unix:'file/path/name.txt'
我已经搜索了整个堆栈,但找不到任何适合我的答案。您可以使用
os.path.split()
。根据,它根据运行python的操作系统来分割路径
注意:由于不同的操作系统具有不同的路径名约定,因此标准库中有多个版本的此模块。path模块始终是适合Python运行的操作系统的路径模块,因此可用于本地路径。但是,如果要操纵始终采用不同格式之一的路径,也可以导入和使用各个模块。它们都有相同的接口:
UNIX样式路径的posixpath
- Windows路径的ntpath
- 旧式MacOS路径的macpath
- OS/2 EMX路径的OS2EMX路径
ntpath
,就像文档中所说的那样:
>>> import ntpath
>>> ntpath.split("c:\\Program Files\\user\\file1.txt")
('c:\\Program Files\\user', 'file1.txt')
>>> ntpath.split("file/path/name.txt")
('file/path', 'name.txt')
os.path.split
为获取目录名提供了比os.path.dirname
更大的好处吗?正如OP所说,“目标是只返回文件路径而不返回文件名。”是的,您可以毫无问题地这样做。顺便说一下,os.path.dirname
在此特定路径失败,因为代码未在windows上运行。os
模块检测到操作系统不是windows。因此,根据os
模块,这不是一个有效的路径。@saz它不适用于所有unix路径。例如,/home/user/c:\\foo\bar\baz
在unix中有效,但ntpath.dirname
将返回/home/user/c:\\\\foo\\bar
,而不是/home/user
。