win10 下python2.7遍历中文文件夹编码问题:ascii' codec can't decode byte 0xe8 in position 60: ordinal not in rang

源代码:

big_shuzu = []
path = r"C:\Users\ME\Desktop\Python project\pachong\scrapy\baichuan4\证券时报网"。encode('gbk')

for root,dirs,files in os.walk(path):
	print(root)
	print(dirs)
	print files
	for dir in dirs:
		print(os.path.join(root, dir) + '\n')
	for fp in files:
		print(os.path.join(root, fp))
		if fp == None:
			print ('None')
		else:
			print(os.path.join(root, fp))

遇到的问题是'ascii' codec can't decode byte 0xe8 in position 60: ordinal not in range(128)


首先得分清楚一些常见的编码:


python采用的是ASCII 和Unicode编码,所以我们在处理含有中文文件的时候,需要转变成utf-8

解决方案:

在开头添加一段

import sys
reload(sys)
sys.setdefaultencoding("utf8")

这样就能成功的运行了。但是这个时候仍然输出的是Unicode码,中文也变成乱码(ascii)。

所以在代码出还需要做一些编码的转换,比如在输出文件夹的时候,加上.decode('gbk').encode('utf-8')。

先转变成gbk后再转换成utf-8,这样就能在python2.7编译环境下输出中文了。



ps:注意不能在列表添加.decode('gbk').encode('utf-8')。列表是没有这个属性滴

猜你喜欢

转载自blog.csdn.net/weixin_41931602/article/details/80585736