分类
python

Python处理文件名或路径名中无法decode代码问题

当然path前加r, 或者wingdows转用反斜杠,然后用了这四种方法还不行,windows下执行提示windows error 123之类的错误,发现文件名中会有无法decode的符号问号 ?的,基本就是在python 2之下无法解决了。

首先讨论的是python 2处理时的问题,其实不是单单指中文名的问题,即使是中文名称,如果能够decode还是没问题的,比如用如下这些方法:

  • – coding: utf-8 –– 或者 –– coding: gbk –
  • 强制utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
  • .decode(‘gbk’).encode(‘utf-8’)
  • unicode(path_name,’utf8′)

当然path前加r, 或者wingdows转用反斜杠,然后用了这四种方法还不行,windows下执行提示windows error 123之类的错误,发现文件名中会有无法decode的符号问号 ?的,基本就是在python 2之下无法解决了。

Windows Error错误参考:

  • WindowsError:[Error 2]        不存在这个文件
  • WindowsError:[Error 3]        没有这个路径
  • WindowsError:[Error 5]        权限问题
  • WindowsError:[Error 13]       该文档被其它程序占用,处理不了  
  • WindowsError:[Error 123]      路径语法有误
  • WindowsError:[Error 145]      目录非空,多在删除非空目录时出现

不要再花时间去解决python 2处理文件名的问题了,基本无法解决的,还是转用python 3吧,ITGeeker技术奇客测试已完美解决,用的是python 3.6的版本,而且是WSL的Ubunt版本测试的。而且现在更新到win10 2019 May的更新版,可以在微软商店直接下载3.7官方版本了,这是催促大家赶紧放弃python 2的节奏。

Python 3.6默认使用utf-8编码,当然你也可以再加上reload在文件首,但和python 2有所不同:

import importlib
import sys
importlib.reload(sys)

发表评论

电子邮件地址不会被公开。 必填项已用*标注