OpenStack某些命令使用grep過濾報錯

2021-10-08 05:19:40 字數 2398 閱讀 9768

openstack後台使用某些命令的時候,比如glance image-list |grep ***、neutron ***-list |grep ***的時候,報錯「『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)

(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",,

"credits" or "license"

for more information.

>>> import sys

>>> reload(sys)

'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命令過濾,即可正常顯示結果。

使用rdo安裝openstack

1 安裝最新的openstack rdo的yum源 yum install y 2 安裝openstack packstack yum install y openstack packstack 3 安裝openstack packstack allinone 4 待安裝完成後 source roo...

配置openStack使用spice

注 因為在測試配置過程中反覆配置過多次,以下內容可能並不完整,有待驗證。按官方文件 openstack install guide yum juno 搭建和配置的openstack預設使用novnc作為雲主機的控制台訪問方式,如果需要配置使用gui的作業系統,會顯得比較尷尬。所以嘗試配置使用spic...

使用RDO安裝openstack

2018.04.02 15 13 03字數 351閱讀 1251 1 安裝最新的openstack rdo的yum源 yum install y 2 安裝openstack packstack yum install y openstack packstack 3 安裝openstack packs...