如何将文件移动到python中的特定文件夹(unicode)

时间:2018-07-24 04:44:16

标签: python unicode file-move

我想将文件移到特定文件夹。
但是,由于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文件名。
我搜索了许多解决方案,但无法解决。
能解决吗?
预先感谢您的帮助。

2 个答案:

答案 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代码,因为编辑器可能使用了错误的编码