【发布时间】:2014-11-19 17:25:46
【问题描述】:
我有这个代码sn-p
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 sane”有效而简单的目录名无效?我找不到与 Windows 网络名称/反斜杠相关的任何内容。
【问题讨论】:
-
您能否使用
repr(tmp)、repr(os.path.dirname(tmp))等向我们展示相同的信息?另外,这是什么平台,你是在 Windows 还是 其他东西 上运行它? -
windows下是cygwin。
repr(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' -
Cygwin 是一个 POSIX 实现,所以
os.path == posixpath.
标签: python string windows dirname