python文件頭部聲明#coding=utf-8問題
一、python2和python3默認編碼
python2默認的編碼格式是ASCII格式,python3默認的編碼格式是utf-8格式。
pycharm控制臺輸入如下命令,可以獲取當前python環(huán)境下的默認編碼格式
//python2環(huán)境 >>import sys >>sys.getdefaultencoding() >>'ascii'
//python3環(huán)境 >>import sys >>sys.getdefaultencoding() >>'utf-8'
二、# coding=utf-8
在python2環(huán)境中編寫python代碼時,如果代碼(或者注釋)有中文,需要在python文件的開頭加入
# -*- coding: UTF-8 -*- 或者 # coding=utf-8
注意:# coding=utf-8 的 = 號兩邊不要空格。
如果未指定編碼格式,使用默認編碼格式ASCII碼,那么在執(zhí)行該文件時,會出現(xiàn)報錯:
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)境中,源碼文件默認使用utf-8編碼,可以正常解析中文,不需要開頭加上面的代碼,但是為了代碼的可移植性,建議在編寫程序的時候加上。
另外,使用編輯器編寫python程序時,還需要設(shè)置py文件存儲的格式為UTF-8,否則會出現(xiàn)亂碼或者報錯。
三、#!/usr/bin/env python
一般在python文件的開頭第一行,我們都會看到下面的代碼行
- python2
#!/usr/bin/env python 或者 #!/usr/bin/python
- python3
#!/usr/bin/env python3 或者 #!/usr/bin/python3
這行代碼只對 Linux/Unix 用戶適用,用來指定本腳本用什么解釋器來執(zhí)行。
其他環(huán)境下等同于注釋。
為了代碼的可移植性,建議在編寫程序的時候加上。
1.這行代碼是什么意思?
要理解這行代碼,需要把這一行語句拆分成兩個部分
- 第一部分是 #!
- 第二部分是 /usr/bin/env python
關(guān)于 #! 這個符號,叫做shebang或者sha-bang,有的翻譯組將它譯為 釋伴,即“解釋伴隨行”的簡稱,同時又是shebang的音譯。
Shebang通常出現(xiàn)在類Unix系統(tǒng)的腳本中第一行,作為前兩個字符。在Shebang之后,可以有一個
或數(shù)個空白字符,后接解釋器的絕對路徑,用于指明執(zhí)行這個腳本文件的解釋器。
2.#!/usr/bin/python和#!/usr/bin/env python的區(qū)別
- #!/usr/bin/python 是告訴操作系統(tǒng)執(zhí)行這個腳本的時候,調(diào)用 /usr/bin 下的 python 解釋器。
- #!/usr/bin/env python 這種用法是為了防止操作系統(tǒng)用戶沒有將 python 裝在默認的 /usr/bin 路徑里。當系統(tǒng)看到這一行的時候,首先會到 env 設(shè)置里查找 python 的安裝路徑,再調(diào)用對應(yīng)路徑下的解釋器程序完成操作。
- #!/usr/bin/python 相當于寫死了 python 路徑。
- #!/usr/bin/env python 會去環(huán)境設(shè)置尋找 python 目錄,可以增強代碼的可移植性,推薦這種寫法。
有這句的,加上執(zhí)行權(quán)限后,可以直接用 ./ 執(zhí)行,不然會出錯,因為找不到 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)境下都可以運行,中文編碼不報錯,建議在編寫python程序時,在文件開頭加上這兩句。
#!/usr/bin/env python # coding=utf-8
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Python中的if __name__ == __main__詳情
在學(xué)習Python的過程中發(fā)現(xiàn)即使把if __name__ == ‘__main__’ 去掉,程序還是照樣運行。很多小伙伴只知道是這么用的,也沒有深究具體的作用。這篇文字就來介紹一下Python中的if __name__ == ‘__main__’的作用,需要的朋友參考下文2021-09-09python OpenCV的imread不能讀取中文路徑問題及解決
這篇文章主要介紹了python OpenCV的imread不能讀取中文路徑問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Python實現(xiàn)可設(shè)置持續(xù)運行時間、線程數(shù)及時間間隔的多線程異步post請求功能
這篇文章主要介紹了Python實現(xiàn)可設(shè)置持續(xù)運行時間、線程數(shù)及時間間隔的多線程異步post請求功能,涉及Python網(wǎng)絡(luò)請求的創(chuàng)建、發(fā)送、響應(yīng)、處理等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Python?庫?PySimpleGUI?制作自動化辦公小軟件的方法
Python?在運維和辦公自動化中扮演著重要的角色,PySimpleGUI?是一款很棒的自動化輔助模塊,讓你更輕松的實現(xiàn)日常任務(wù)的自動化,下面通過本文給大家介紹下Python?庫?PySimpleGUI?制作自動化辦公小軟件的過程,一起看看吧2021-12-12解決tf.keras.models.load_model加載模型報錯問題
這篇文章主要介紹了解決tf.keras.models.load_model加載模型報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06Python實現(xiàn)RabbitMQ6種消息模型的示例代碼
這篇文章主要介紹了Python實現(xiàn)RabbitMQ6種消息模型的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-03-03