python文件頭部聲明#coding=utf-8問(wèn)題
一、python2和python3默認(rèn)編碼
python2默認(rèn)的編碼格式是ASCII格式,python3默認(rèn)的編碼格式是utf-8格式。
pycharm控制臺(tái)輸入如下命令,可以獲取當(dāng)前python環(huán)境下的默認(rèn)編碼格式
//python2環(huán)境 >>import sys >>sys.getdefaultencoding() >>'ascii'
//python3環(huán)境 >>import sys >>sys.getdefaultencoding() >>'utf-8'
二、# coding=utf-8
在python2環(huán)境中編寫(xiě)python代碼時(shí),如果代碼(或者注釋?zhuān)┯兄形?,需要在python文件的開(kāi)頭加入
# -*- coding: UTF-8 -*- 或者 # coding=utf-8
注意:# coding=utf-8 的 = 號(hào)兩邊不要空格。
如果未指定編碼格式,使用默認(rèn)編碼格式ASCII碼,那么在執(zhí)行該文件時(shí),會(huì)出現(xiàn)報(bào)錯(cuò):
s = "中文" print(s)
E:\PycharmProjects\LEDdisplay2\venv\Scripts\python.exe E:/PycharmProjects/LEDdisplay2/2.py
File "E:/PycharmProjects/LEDdisplay2/2.py", line 1
SyntaxError: Non-ASCII character '\xe4' in file E:/PycharmProjects/LEDdisplay2/2.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for detailsProcess finished with exit code 1
python3環(huán)境中,源碼文件默認(rèn)使用utf-8編碼,可以正常解析中文,不需要開(kāi)頭加上面的代碼,但是為了代碼的可移植性,建議在編寫(xiě)程序的時(shí)候加上。
另外,使用編輯器編寫(xiě)python程序時(shí),還需要設(shè)置py文件存儲(chǔ)的格式為UTF-8,否則會(huì)出現(xiàn)亂碼或者報(bào)錯(cuò)。
三、#!/usr/bin/env python
一般在python文件的開(kāi)頭第一行,我們都會(huì)看到下面的代碼行
- python2
#!/usr/bin/env python 或者 #!/usr/bin/python
- python3
#!/usr/bin/env python3 或者 #!/usr/bin/python3
這行代碼只對(duì) Linux/Unix 用戶適用,用來(lái)指定本腳本用什么解釋器來(lái)執(zhí)行。
其他環(huán)境下等同于注釋。
為了代碼的可移植性,建議在編寫(xiě)程序的時(shí)候加上。
1.這行代碼是什么意思?
要理解這行代碼,需要把這一行語(yǔ)句拆分成兩個(gè)部分
- 第一部分是 #!
- 第二部分是 /usr/bin/env python
關(guān)于 #! 這個(gè)符號(hào),叫做shebang或者sha-bang,有的翻譯組將它譯為 釋伴,即“解釋伴隨行”的簡(jiǎn)稱(chēng),同時(shí)又是shebang的音譯。
Shebang通常出現(xiàn)在類(lèi)Unix系統(tǒng)的腳本中第一行,作為前兩個(gè)字符。在Shebang之后,可以有一個(gè)
或數(shù)個(gè)空白字符,后接解釋器的絕對(duì)路徑,用于指明執(zhí)行這個(gè)腳本文件的解釋器。
2.#!/usr/bin/python和#!/usr/bin/env python的區(qū)別
- #!/usr/bin/python 是告訴操作系統(tǒng)執(zhí)行這個(gè)腳本的時(shí)候,調(diào)用 /usr/bin 下的 python 解釋器。
- #!/usr/bin/env python 這種用法是為了防止操作系統(tǒng)用戶沒(méi)有將 python 裝在默認(rèn)的 /usr/bin 路徑里。當(dāng)系統(tǒng)看到這一行的時(shí)候,首先會(huì)到 env 設(shè)置里查找 python 的安裝路徑,再調(diào)用對(duì)應(yīng)路徑下的解釋器程序完成操作。
- #!/usr/bin/python 相當(dāng)于寫(xiě)死了 python 路徑。
- #!/usr/bin/env python 會(huì)去環(huán)境設(shè)置尋找 python 目錄,可以增強(qiáng)代碼的可移植性,推薦這種寫(xiě)法。
有這句的,加上執(zhí)行權(quán)限后,可以直接用 ./ 執(zhí)行,不然會(huì)出錯(cuò),因?yàn)檎也坏?python 解釋器。
- 調(diào)用方法1:
python script.py
#!/usr/bin/python 被忽略,等同于注釋
- 調(diào)用方法2:
./script.py
#!/usr/bin/python 指定解釋器的路徑
四、#!/usr/bin/env python和# coding=utf-8
為了代碼能夠在linux和windows環(huán)境下都可以運(yùn)行,中文編碼不報(bào)錯(cuò),建議在編寫(xiě)python程序時(shí),在文件開(kāi)頭加上這兩句。
#!/usr/bin/env python # coding=utf-8
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫(kù)的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫(kù)的方法,涉及Python同時(shí)進(jìn)行SQLServer與MongoDB數(shù)據(jù)庫(kù)的連接、查詢、讀取、寫(xiě)入等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06
深入理解python虛擬機(jī)如何實(shí)現(xiàn)閉包
當(dāng)能夠從設(shè)計(jì)者的層面去理解閉包就再也不用死記硬背一些閉包的概念了,所以本文就來(lái)從虛擬機(jī)層面和大家一起討論函數(shù)閉包是如何實(shí)現(xiàn)的2023-10-10
Python使用python-pptx實(shí)現(xiàn)設(shè)置PPT頁(yè)面與文檔屬性
這篇文章主要為大家詳細(xì)介紹了Python如何使用python-pptx實(shí)現(xiàn)設(shè)置PPT頁(yè)面與文檔屬性,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2026-04-04
ruff check文件目錄檢測(cè)--exclude參數(shù)設(shè)置路徑詳解
這篇文章主要為大家介紹了ruff check文件目錄檢測(cè)exclude參數(shù)如何設(shè)置多少路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Python實(shí)現(xiàn)中英文文本朗讀的三種常用方法
本文介紹了Python實(shí)現(xiàn)中英文文本朗讀的三種常用方法,1,pyttsx3:基于系統(tǒng)語(yǔ)音引擎,無(wú)需聯(lián)網(wǎng),可調(diào)節(jié)語(yǔ)速和音量,但語(yǔ)音較機(jī)械;2,gTTS:利用Google API生成高質(zhì)量語(yǔ)音,需聯(lián)網(wǎng)并生成臨時(shí)文件;3, edge-tts:采用微軟Azure,需要的朋友可以參考下2026-04-04
基于python圖書(shū)館管理系統(tǒng)設(shè)計(jì)實(shí)例詳解
這篇文章主要介紹了基于python圖書(shū)館管理系統(tǒng)設(shè)計(jì)實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Python實(shí)現(xiàn)某論壇自動(dòng)簽到功能
這篇文章主要介紹了Python實(shí)現(xiàn)論壇自動(dòng)簽到功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Python之random庫(kù)的常用函數(shù)有哪些
這篇文章主要為大家詳細(xì)介紹了Python之random庫(kù)的常用函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02

