为什么重命名不起作用?
Why rename doesn't work?
下面的目录重命名命令可以正常工作
os.rename("4774","newname")
然而,这个失败了,告诉"No such file or directory"
xxx = "4\%d\%d\%d" % (347, 357, 344)
os.rename(xxx, "newname")
我也试过跟随失败
xxx = "4" + "\" + str(int(s1)) + "\" + str(int(s2)) + "\" + str(int(s3))
如果我打印,最后两种方法是构造与第一个文字相同的字符串。那么为什么它们不起作用?
第二个例子没有转义:
"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]])
"4774"
此文字包含转义的八进制序列。其他字符串没有并且不同。
>>> s1 = "4774"
>>> 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
有效,但您的字符串不同。
下面的目录重命名命令可以正常工作
os.rename("4774","newname")
然而,这个失败了,告诉"No such file or directory"
xxx = "4\%d\%d\%d" % (347, 357, 344)
os.rename(xxx, "newname")
我也试过跟随失败
xxx = "4" + "\" + str(int(s1)) + "\" + str(int(s2)) + "\" + str(int(s3))
如果我打印,最后两种方法是构造与第一个文字相同的字符串。那么为什么它们不起作用?
第二个例子没有转义:
"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]])
"4774"
此文字包含转义的八进制序列。其他字符串没有并且不同。
>>> s1 = "4774" >>> 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
有效,但您的字符串不同。