当前位置: 移动技术网 > IT编程>脚本编程>Python > OpenStack某些命令使用grep过滤报错

OpenStack某些命令使用grep过滤报错

2020年07月18日  | 移动技术网IT编程  | 我要评论

OpenStack某些命令使用grep过滤报错

OpenStack后台使用某些命令的时候,比如glance image-list |grep xxx、neutron xxx-list |grep xxx的时候,报错“‘ascii’ codec can’t encode characters in position 2689-2698: ordinal not in range(128)”
在这里插入图片描述

报错原因

Python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0x?? in position 1: ordinal not in range(128),因此python没办法处理非ascii编码,此时需要重新设置python的默认编码,一般设置为utf8的编码格式。

查看系统当前的Python编码,可以按照如下方式:
1、直接输入“python”命令(针对Python2.x),进入Python命令行;
2、在Python命令行,输入以下命令导入sys:

>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>

3、最后输入命令“sys.getdefaultencoding()”即可查询到当前Python环境的默认编码:

>>> sys.getdefaultencoding()
'utf8'

总体步骤示例如下图:
在这里插入图片描述

解决方案

方案一:用函数sys.setdefaultencoding()临时修改编码
1、直接输入“python”进入Python命令行;
2、分别输入“import sys”、“reload(sys)”导入sys;
3、输入“sys.setdefaultencoding(‘utf8’)”设置默认编码为utf8;

[root@node-1 ~]# python
Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.getdefaultencoding()
'ascii'
>>> sys.setdefaultencoding('utf8')
>>> sys.getdefaultencoding()
'utf8'
>>> exit()

此时在执行sys.getdefaultencoding()就会发现编码已经被设置为utf8的了,但是在解释器里修改的编码只能保证当次有效,在重启解释器后,会发现,编码又被重置为默认的ascii了。
此时可以按照方案二永久修改python编码为utf8.

方案二:创建sitecustomize.py文件永久修改编码

1、进入python的默认lib库

[root@node-1 ~]# cd /lib/python2.7/site-packages/
[root@node-1 site-packages]# pwd
/lib/python2.7/site-packages
[root@node-1 site-packages]# 

2、创建文件sitecustomize.py

[root@node-1 site-packages]# vim sitecustomize.py

3、在文件sitecustomize.py中添加以下内容

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

wq保存退出。
此时再重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同。这是因为系统在python启动的时候,会自行调用sitecustomize.py这个文件,来设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。

再次使用grep命令过滤,即可正常显示结果。

本文地址:https://blog.csdn.net/weixin_38179166/article/details/107407328

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网