Python 获取Linux中Windows路径的basename
假设我有一个包含Windows文件地址的字符串,比如Python 获取Linux中Windows路径的basename,python,python-2.7,Python,Python 2.7,假设我有一个包含Windows文件地址的字符串,比如 local_address = "C:\\TEMP\\filename.txt" 要从上面的地址检索文件名,我使用 import os filename = os.path.basename(local_address) 在Windows中,当我运行代码时,输出是 >>> print filename filename.txt 但是在linux中运行代码时,我得到 >>> print file
local_address = "C:\\TEMP\\filename.txt"
要从上面的地址检索文件名,我使用
import os
filename = os.path.basename(local_address)
在Windows中,当我运行代码时,输出是
>>> print filename
filename.txt
但是在linux中运行代码时,我得到
>>> print filename
C:\TEMP\filename.txt
原因是(我认为是)当Python的Linux实现需要Linux本地文件地址格式而不知道Windows地址时。让我单独手动解析地址,有没有其他解决方案可以让我得到统一的结果?- 在windows上,文件分隔符(
)是反斜杠(os.sep
)。也接受斜杠(Windows操作系统函数接受斜杠)\
- 在Linux上,文件分隔符(
)是斜杠(os.sep
)。不接受反斜杠/
os.path.basename(本地地址.replace('\\',os.sep))
要将反斜杠转换为斜杠,以便
basename
可以处理它(它也可以在windows上工作:您可以用相同的东西替换某些东西)Python有多个os.path
模块的实现,如果您幸运的话,您的Python可能配备了ntpath
模块:
>>> import ntpath
>>> ntpath.basename(r'C:\TEMP\filename.txt')
'filename.txt'
根据文件:
由于不同的操作系统具有不同的路径名约定,因此标准库中有多个版本的此模块。os.path
模块始终是适合Python运行的操作系统的路径模块,因此可用于本地路径。但是,如果要操纵始终采用不同格式之一的路径,也可以导入和使用各个模块。它们都有相同的接口:
用于UNIX样式的路径posixpath
用于Windows路径ntpath
没有要导入的
npath
模块。同样的代码在Windows和Linux上都能工作吗?ntpath
,而不是npath