假设我有一个包含Windows文件地址的字符串,让我们说
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
原因是(我认为)当Linux的Linux实现期望Linux本地文件地址格式并且不知道Windows地址时。让手动解析地址,还有其他解决方案,以便我得到统一的结果吗?
答案 0 :(得分:7)
Python有os.path
模块的多个实现,如果你很幸运,你的python可能配备ntpath
模块:
>>> import ntpath
>>> ntpath.basename(r'C:\TEMP\filename.txt')
'filename.txt'
根据os.path文件:
由于不同的操作系统具有不同的路径名约定,因此标准库中有此模块的多个版本。
os.path
模块始终是适用于Python运行的操作系统的路径模块,因此可用于本地路径。但是,如果要操作始终采用不同格式之一的路径,也可以导入和使用单个模块。它们都有相同的界面:
posixpath
用于UNIX风格的路径ntpath
用于Windows路径
答案 1 :(得分:1)
os.sep
)是反斜杠(\
)。 Slash也被接受(Windows操作系统功能接受它)os.sep
)是斜杠(/
)。不接受反斜杠。什么会有效os.path.basename(local_address.replace('\\',os.sep))
将反斜杠转换成斜杠,以便basename
可以处理它(它也适用于Windows:你用同样的东西替换某些东西)