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

Neo*_*yme 2 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'
Run Code Online (Sandbox Code Playgroud)

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

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

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

nne*_*neo 6

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

例子:

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

os.rename(file_list[0], u'myfile.dbf')
Run Code Online (Sandbox Code Playgroud)