Python設定編碼和PYTHONPATH

2021-09-01 07:12:36 字數 1676 閱讀 4084

python中的編碼是個惱人的問題,第乙個是檔案編碼,在第一行設定了#-*- coding: utf-8 -*-就可以解決。

第二個是環境編碼,就是你有個中文unicode的encode或decode操作,它給你報錯。

我們最不喜歡看見這段出錯資訊了:

unicodedecodeerror: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
加入這段**在專案入口檔案開頭,可以解決這個問題。

import sys

try:

reload(sys)

sys.setdefaultencoding("utf-8")

except attributeerror:

pass #沒起作用

或者將這段**放在專案根目錄下的sitecustomize.py檔案中。

問題是python2.5之後的版本,有時不在專案開頭自動載入這個檔案。糾結啊,自己定義的方式自己有時不支援。

只好在入口檔案加一段,確保執行sitecustomize.py

# -*- coding: utf-8 -*-

#解決python2.5之後有時無法載入sitecustomize.py的問題

import sys

import os

sys.path = [os.getcwd()] + sys.path

import sitecustomize

reload(sitecustomize)

另外關於python的搜尋路徑pythonpath,可以用以下方式增加乙個路徑到其中,比如專案根目錄下的library

# -*- coding: utf-8 -*-

import os.path

import sys

import site

try:

reload(sys)

sys.setdefaultencoding("utf-8")

except attributeerror:

pass

base_dir = os.path.dirname(os.path.abspath(__file__))

prev_sys_path = list(sys.path)

# site.addsitedir adds this directory to sys.path then scans for .pth files

# and adds them to the path too.

site.addsitedir(os.path.join(base_dir, 'library'))

# addsitedir adds its directories at the end, but we want our local stuff

# to take precedence over system-installed packages.

# see

new_sys_path =

for item in list(sys.path):

if item not in prev_sys_path:

sys.path.remove(item)

sys.path[:0] = new_sys_path

Python編碼 常見的編碼設定

1 檢視自己電腦的python的編碼設定 coding utf8 import sys,locale locale.getpreferredencoding 重要引數,預設為開啟本地作業系統讀取的文字檔案的編碼方式,因作業系統而異,除非指定 sys.stdout stdin stderr 標準輸出 ...

python日積月累之None和設定編碼

內建型別none表示乙個空物件,沒有方法和屬性。none是乙個特殊的常量。none和false不同。none不是0。none不是空字串。none和任何其他的資料型別比較永遠返回false。none有自己的資料型別nonetype。你可以將none複製給任何變數,但是你不能建立其他nonetype物件...

Python 設定編碼格式

python在安裝時,預設的編碼是ascii,當程式中出現非ascii編碼時,python的處理常常會報這樣的錯unicodedecodeerror ascii codec can t decode byte 0x?in position 1 ordinal not in range 128 pyt...