os.rename重命名为带有utf字符的字符时会添加一个额外的字符

时间:2019-10-23 00:16:13

标签: python-3.x windows filenames utf iso-8859-1

这是我第一次问关于stackoverflow的问题,所以让我知道我做错了什么。

我正在尝试使用os库重命名文件。我希望文件名在生成的字符串中包含一些非ASCII字符。这是代码:

Button_Click

以下是newFileName字符串的示例:“ te©st©.txt”

但是,当文件保存时,它会添加一个额外的字符:“ te©st©.txt”

从其他读物来看,听起来好像utf-8实际上将某些代码映射到两个字符或类似的字符,这就是Â的来源。如果在调用os.rename之前就立即打印了字符串,它将以我期望的方式打印到终端。所以我猜想它一定是os.rename与文件系统交互的方式。

我正在使用Windows。

1 个答案:

答案 0 :(得分:0)

也许您可以尝试完全使用unicode?

path = u'99 bottles of \N{greek small letter beta}eer on the wall.txt'
f = open(path, 'w')
f.write('Hello, World!\n')
f.close()
import glob
print(glob.glob(path)) # ['99 bottles of βeer on the wall.txt']
import os
print(os.path.getsize(path)) # 15