目录遍历-python中的os.walk函数为什么遍历带有中文的路径时就失败?

问题描述

python中的os.walk函数为什么遍历带有中文的路径时就失败?
python中的os.walk函数遍历带有中文的路径时报错如下:

 Traceback (most recent call last): File ""/usr/lib/python2.7/threading.py"" line 810 in__bootstrap_inner   self.run() File ""Store.py"" line 79 in run   dir_production_list =FileOperation.visitDir_walk(self.conf.sProductionInputPath .mp4"") File ""/home/chaoma/superboard/Store/FileOperation.py"" line55 in visitDir_walk    for rootdirsfiles in os.walk(path): File ""/usr/lib/python2.7/os.py"" line 284 in walk   if isdir(join(top name)): File ""/usr/lib/python2.7/posixpath.py"" line 80 in join   path += '/' + bUnicodeDecodeError:'utf8' codec can't decode byte 0xb3 in position 1: invalid start byte

我已经加上了:

- coding:utf-8 -

import sys
reload(sys)
sys.setdefaultencoding(""utf-8"")
还是没用
另外我想问各位大神们一下:os.walk()中传入的路径是str类型的字符串还是unicode类型的,或者说两个类型都可以。
十分感谢,希望大神们指点一二。

解决方案

是在控制台中执行的脚本吗,用一个编辑器等,比如pyCharm

还有可以试试其他编码
#-*- coding:gbk -*-

解决方案二:
看下是显示为乱码还是真的是乱码,一些开发环境本身不支持中文。

解决方案三:
os.walk()中传入的路径是str类型的字符串还是unicode类型的,或者说两个类型都可以吗?求各位朋友指点一下,谢谢

解决方案四:
在window下,所有与os相关的都应该是gbk编码的str.

解决方案五:
文件头部的编码格式声明,只是告诉解释器,本文件是什么编码格式的,与你这个问题并无直接关系。os.walk()中应该传str还是unicode,这个问题你应该去查下文档,而不是靠猜。试一下这样做吧:os.walk(u'含中文的路径'.encode('gbk'))

解决方案六:
确实没有直接说是不是str,但是仔细从上下文来分析,是可以判断出是str类型的,在- coding:utf-8 -下,你用如下的方式遍历是没问题的:
os.walk(u'E:中文路径'.encode('gbk'))

时间: 2024-11-03 22:06:32

目录遍历-python中的os.walk函数为什么遍历带有中文的路径时就失败?的相关文章

Python中dictionary items()系列函数的用法实例_python

本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # available only in Python 3.x def make_elements(name, value, **attrs): keyvals = [' %s="%s"' % item for item in attrs.items()] attr_str = ''.join(keyvals

Python中threading模块join函数用法实例分析

  本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后join这些线程结束,例如: ? 1 2 3 4 5 6 7 8 9 for i in range(10): t = ThreadTest(i) thread_arr.append(t)   for i in range(10): thread_arr[i].start()   for i in ra

Python中的os.path路径模块中的操作方法总结_python

解析路径路径解析依赖与os中定义的一些变量: os.sep-路径各部分之间的分隔符. os.extsep-文件名与文件扩展名之间的分隔符. os.pardir-路径中表示目录树上一级的部分. os.curdir-路径中当前目录的部分. split()函数将路径分解为两个单独的部分,并返回包含这些结果的tuple.第二个元素是路径的最后部分,地一个元素是其他部分. import os.path for path in [ '/one/two/three', '/one/two/three/', '

python中的内置函数getattr()介绍及示例_python

在python的官方文档中:getattr()的解释如下: getattr(object, name[, default]) Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object's attributes, the result is the value of that attribute. For examp

遍历-python中的路径问题,总是报错

问题描述 python中的路径问题,总是报错 代码通过遍历文件夹后将路径存储到数组中,这是其中一条数据 'C:Echo-to-Johncut-in MF4wholedata.xlsx' ,为什么打开文件时出现 error22的错误 解决方案 Python zipfile报错问题 解决方案二: 文件路径中空格是否有影响.

python中string的操作函数

在python有各种各样的string操作函数.在历史上string类在python中经历了一段轮回的历史.在最开始的时候,python有一个专门的string的module,要使用string的方法要先import,但后来由于众多的python使用者的建议,从python2.0开始, string方法改为用S.method()的形式调用,只要S是一个字符串对象就可以这样使用,而不用import.同时为了保持向后兼容,现在的 python中仍然保留了一个string的module,其中定义的方法

python中的一些类型转换函数小结_python

函数                         描述int(x [,base ])              将x转换为一个整数long(x [,base ])             将x转换为一个长整数float(x )                    将x转换到一个浮点数complex(real [,imag ])       创建一个复数str(x )                      将对象 x 转换为字符串repr(x )                    

Python中正则表达式match()、search()函数及match()和search()的区别详解_正则表达式

match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none 例如: #! /usr/bin/env python # -*- coding=utf-8 -*- import re text = 'pythontab' m = re.ma

Python中的匿名函数使用简介_python

当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: >>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81] 通过对比可以看出,匿名函数lambda x: x * x实际上就是: def f(x):