python运行编码格式_python,linux_python在linux下运行的编码问题,python,linux - phpStudy...

python在linux下运行的编码问题

程序是去本地execel表格中提取数据。问题是,当采用linux默认编码(LANG=en_US)的时候,在读取excel文件中表的名字的时候会报错(表的名字中有数字和汉字)。

最前面已经写# -- coding:utf-8 --

def get_standard_template_infos():

excel_files = get_excel_files(config.get_standard_template_files())#list存放excel文件路径

standard_template_infos = {}

for file in excel_files:

wb = xlrd.open_workbook(file)

sheet_names = wb.sheet_names()

for sheet_name in sheet_names:

standard_template_id = get_standard_template_id(sheet_name)#调用下面函数

def get_standard_template_id(sheet_name):

pattern = u'^(\d{5})'

match = re.match(pattern, sheet_name)

if match is not None:

code = sheet_name[0:5]

return code

else:

print sheet_name#这里报错

return None

报错,报的错误为 :

unicodeEncodeError:"latin-1" codec can't encode characters in position 4-6:ordinal not in range(256)

可当把linux控制台编码方式改为LANG=zh_CN.UTF-8之后,在通过os.walk获取excel文件的时候就会报错(目录为英文,excel名为汉字,也带-)。

代码:

def get_excel_files(dir)

files = []

if not os.path.exists(dir):

return files

for item in os.walk(dir):

file_names = item[2]

if file_names is None or len(file_names) == 0:

continue

dir_path = item[0]

for file_name in file_names:

if file_name[0] == '.' or file_name[0] == '~':

continue

if file_name[-5:] == '.xlsx' or file_name[-4:] == '.xls':

files.append(os.path.join(dir_path, file_name))

return files

报错:

"/home/users/zhangzhida/o_platform/import_to_hdp/check_data/share_function.py", line 27, in get_excel_files

for item in os.walk(dir):

File "/home/users/zhangzhida/.jumbo/lib/python2.7/os.py", line 284, in walk

if isdir(join(top, name)):

File "/home/users/zhangzhida/.jumbo/lib/python2.7/posixpath.py", line 71, in join

path += '/' + b

UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 3: invalid start byte

windows下运行的时候,正常,不报错。求教,为什么?是因为我的excel文件名的编码格式的问题么?该如何解决

注:linux中python版本为2.7.3

widows下为2.7.13

相关阅读:

前端帐号密码管理问题

怎么运行python文件

Handler怎么移除消息

单独js文件可以ajax,放到网页上就不行了。。什么情况?

微信 网页端调起支付API 微信 JSSDK发起一个微信支付请求 的区别在哪里?

nodejs中如何使用up来重启HTTP服务器?

如何修改vim的光标颜色

div 内容会下滑

http响应码返回202 tomcat spring

请问下面这个数组怎么在HTML中遍历出来,试了很多方法还是报错

vue.js怎么实现这种切换功能?

apple官网的登录页面不能访问表单元素

node环境突然崩了 卡在下图不动。。有人遇到过么

使用masonry布局以后UIlabel无法自动换行 设置了preferredMaxLayoutWidth属性

python try...except中如何输入e的行号

闪动问题——iOS——UICollectionItem

请问为什么第一种写法是错的,第二种就是对的?

像css的transition和animation这类动画效果其实都是用setTimeout之类的函数来实现的吗?

node中使用require引入模块会污染全局变量,如何解决呢?

一个3000w+的数据,怎么统计出某个字段的内容包含“张三”的记录总数?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值