我已经获得了此代码段
print "tmp = ", tmp
print "dirname = ", os.path.dirname(tmp)
print "tmp sane = ", (os.path.dirname(tmp.replace("\\", "/"))).replace("/", "\\")
产生此结果的
tmp = \\aaaa.aaa\aaaaaaaa\aaaaaaaaa\aaaa\aaaa\aaaaa\aaaaaaa\aaaaaaa\aaaa.aaaaaaaa_aaaaaa\aa\aaaaa\aaaaaa\aaa\aaaaaa\aa\aaaaa\aaaaaaa_aaaaaaaaa_aaa\aaaa_aa.aaa
dirname =
tmp sane = \\aaaa.aaa\aaaaaaaa\aaaaaaaaa\aaaa\aaaa\aaaaa\aaaaaaa\aaaaaaa\aaaa.aaaaaaaa_aaaaaa\aa\aaaaa\aaaaaa\aaa\aaaaaa\aa\aaaaa\aaaaaaa_aaaaaaaaa_aaa
任何想法为什么" tmp理智"作品和简单的名字不是吗?我无法找到与Windows网络名称/反斜杠相关的任何内容。
答案 0 :(得分:3)
您很可能不会在Windows上运行此功能。除了实际的Windows环境之外,该行为与使用os.path
模块完全一致。
os.path
调整行为以匹配当前平台。在Windows上,支持向前和向后斜杠,但在Linux和Mac上,只能识别正斜杠。这与您运行代码的平台上使用的实际约定相匹配。
如果要在Mac OS X或Linux等POSIX OS上从Windows路径中拆分dirnames,则需要导入ntpath
模块;该模块是Windows上真正使用的模块,但仍可在其他平台上使用:
import ntpath
result = ntpath.dirname(path)
请参阅os.path
module documentation的顶部:
注意:由于不同的操作系统具有不同的路径名约定,因此标准库中有多个此模块版本。
os.path
模块始终是适用于Python运行的操作系统的路径模块,因此可用于本地路径。但是,如果要以其中一种格式操作始终的路径,也可以导入和使用各个模块。它们都有相同的界面:
posixpath
用于UNIX风格的路径ntpath
用于Windows路径macpath
用于旧式MacOS路径os2emxpath
用于OS / 2 EMX路径
在这种情况下,Cygwin被认为是POSIX环境,而不是Windows。