在Linux中获取Windows路径的基本名称

时间:2017-01-15 09:49:24

标签: 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 filename
C:\TEMP\filename.txt

原因是(我认为)当Linux的Linux实现期望Linux本地文件地址格式并且不知道Windows地址时。让手动解析地址,还有其他解决方案,以便我得到统一的结果吗?

2 个答案:

答案 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)

  • 在Windows上,文件分隔符(os.sep)是反斜杠(\)。 Slash也被接受(Windows操作系统功能接受它)
  • 在Linux上,文件分隔符(os.sep)是斜杠(/)。不接受反斜杠。

什么会有效os.path.basename(local_address.replace('\\',os.sep))

将反斜杠转换成斜杠,以便basename可以处理它(它也适用于Windows:你用同样的东西替换某些东西)

相关问题