在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
有关如何重命名此文件的任何想法?
答案 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')