Python 3.6:如何使用unicode / utf-8文件名保存文件?

时间:2017-06-15 07:49:56

标签: python unicode flask

所以我在写一个写有unicode文件名的烧瓶中的文件上传时遇到了麻烦。

这就是我所拥有的:

   for name, file in request.files.items():

        if secure_filename(file.filename) in alternate_file_index: 

            path_to_save = "/test-unicode/B-286_10 - \u8907\u88fd.xls"

            # file.save(path_to_save) didnt work

            with open(path_to_save, "wb") as save_file:
                save_file.write(file.read())
        else:
            # English name files
            path_to_save = "path/to/save"
            file.save(path_to_save)

错误:

如果我使用path_to_save.encode(“utf-8”),我得到:

    fdst.write(buf)
AttributeError: 'bytes' object has no attribute 'write'

file.save(path_to_save)给出了这个错误:

 File "/flaskapp/env/lib/python3.6/site-packages/werkzeug/datastructures.py", line 2703, in save
    dst = open(dst, 'wb')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 54-55: ordinal not in range(128)

英文字符中的所有案例都很有效。

任何建议都将不胜感激。 TY。

答案: 在stackoverflow上发布这个问题之后,这个bug已经神奇地解决了。

PS: path_to_save.encode(“utf-8”)有效。显然,我错过了程序运行的那一刻。 LOLZ ...

1 个答案:

答案 0 :(得分:-1)

添加arg“encoding ='utf-8'”

switch(var num = getSomeNum()) {
   case 1: //Do something with num
           break;

   default: break;
}

public static int GetSomeNum() => 3;