我想将文件移到特定文件夹。
但是,由于Unicode问题,文件没有被移动。
import os
import shutil
file=r"c:/test/test.rar"
folder=r"c:/test/発射"
shutil.move(file, folder)
#os.rename(file, os.path.join(folder, os.path.split(file)[1]))
“ shutil.move”和“ os.rename”返回“ [Errno 22]无效模式('wb')或文件名”和“ WindowsError:[Error 123]文件名”。他们无法识别Unicode文件名。
我搜索了许多解决方案,但无法解决。
能解决吗?
预先感谢您的帮助。
答案 0 :(得分:1)
尝试使用系统的编码对文件夹名称进行编码:
import sys
folder = r"c:/test/発射".encode(sys.getfilesystemencoding())
此外,如果您想使用os.rename
,建议您以以下方式重写行:
os.rename(file, os.path.join(folder, os.path.basename(file)))
答案 1 :(得分:0)
从NT 3版本开始,Windows提供了本机允许的unicode文件名,条件是字符位于基本多语言平面中(unicode代码小于或等于U + FFFF)。简单地说,您应该在文件夹名称中添加一个“ /”。因此,如果该文件夹存在,这应该在Python 3中起作用:
file="c:/test/test.rar"
folder="c:/test/\u767a\u5c04/"
shutil.move(file, folder)
我强行将非ASCII字符的Unicode代码,因为编辑器可能使用了错误的编码