0

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

4

2 回答 2

1

尝试使用系统的编码对文件夹名称进行编码:

import sys

folder = r"c:/test/発射".encode(sys.getfilesystemencoding())

另外,如果您想使用os.rename我建议您以这种方式重写您的行:

os.rename(file, os.path.join(folder, os.path.basename(file)))
于 2018-07-24T05:08:12.860 回答
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 代码,因为编辑器可能使用错误的编码

于 2018-07-24T06:18:37.407 回答