使用os.rename()重命名具有特殊字符的文件

时间:2014-11-28 18:23:52

标签: python rename

在Python中,我试图重命名一些名称如下的文件:

B-4¨íÐóμ(602)的.dbf

假设这是'file_list'的第一个元素是我的目录:

file_list = os.listdir(mydir)
file_list[0]

'B-4???\xa8?\xed\x8d\xd0\x8f\xf3?\xb5(602).dbf'

现在这与Windows资源管理器(上图)中显示的文件名完全不同,这可能是以下问题的根源:

os.rename(file_list[0],'myfile.dbf')
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect

有关如何重命名此文件的任何想法?

1 个答案:

答案 0 :(得分:4)

问题是您的文件包含非ASCII字符,无法使用普通的Python(字节)字符串正确表示。您可以通过将Unicode目录名称传递给listdir来从Python获取正确的Unicode名称;这将导致listdir返回Unicode文件名。

示例:

file_list = os.listdir(unicode(mydir)) # or e.g. mydir.decode('utf8')

os.rename(file_list[0], u'myfile.dbf')