以下目录的重命名命令可以正常工作
os.rename("4\347\357\344","newname")
然而,这个失败了,告诉"没有这样的文件或目录"
xxx = "4\%d\%d\%d" % (347, 357, 344)
os.rename(xxx, "newname")
我也试过跟随它失败了
xxx = "4" + "\\" + str(int(s1)) + "\\" + str(int(s2)) + "\\" + str(int(s3))
如果我打印,最后两种方法是构造与第一个文字相同的字符串。那他们为什么不工作?
答案 0 :(得分:3)
第二个例子没有逃脱:
"4\%d\%d\%d" % (347, 357, 344)
会产生4\\347\\357\\344
第一个做,产生4\xe7\xef\xe4
最后一个也没有逃脱。
<强>更新强> 要获得您正在寻找的结果,请尝试
'4'+''.join([chr(int(str(z),8)) for z in [347, 357, 344]])
答案 1 :(得分:0)
"4\347\357\344"
此文字包含转义的八进制序列。其他字符串没有并且不同。
>>> s1 = "4\347\357\344" >>> s2 = "4\%d\%d\%d" % (347, 357, 344) >>> print s1 == s2 False >>> print repr(s1) '4\xe7\xef\xe4' >>> print repr(s2) '4\\347\\357\\344'
如您所见,s1
和s2
不相等。至于s1
的表示,八进制347等于十六进制e7。等等。
总之,os.rename
有效,但您的字符串不同。