Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取Linux中Windows路径的basename_Python_Python 2.7 - Fatal编程技术网

Python 获取Linux中Windows路径的basename

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

假设我有一个包含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
原因是(我认为是)当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运行的操作系统的路径模块,因此可用于本地路径。但是,如果要操纵始终采用不同格式之一的路径,也可以导入和使用各个模块。它们都有相同的接口:

  • posixpath
    用于UNIX样式的路径
  • ntpath
    用于Windows路径

没有要导入的
npath
模块。同样的代码在Windows和Linux上都能工作吗?
ntpath
,而不是
npath