Python頭部2行 #!/usr/bin/python 和 #!/usr/bin/env 的區別 以及編碼方式的指定 2018-10-23
阿新 • • 發佈:2018-11-03
htm ron http 聲明 strong 命令 正則表達 cnblogs 用處 ), 這個語句就起作用了,它用來為腳本語言指定解釋器,通常認為
參考文檔
【整理】關於Python腳本開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件編碼類型
Python 頭部 #!/usr/bin/python 和 #!/usr/bin/env 的區別
1. #!/usr/bin/python 和 #!/usr/bin/env 的區別
這兩個語句與運行模式有關系;
如果我們用普通運行模式如Linux: python test.py
直接指定使用系統默認的 python 來運行該腳本;則以上兩語句無效,沒有什麽用處;
如果想讓 python 程序像普通程序一樣運行,例如:./test.py
(文件要有可執行權限 chmod a+x test.py
#!/usr/bin/env python
要比#!/usr/bin/python
要好,因為 python 解釋器並不安裝在默認路徑 /usr/bin
中,比如虛擬環境中
#!/usr/bin/env python
這種寫法在你的機器上安裝了多個版本的python 的時候有意義,這樣聲明的時候,會去取機器的 PATH 中指定的第一個 Python 來執行腳本。如果這時候由配置了虛擬環境的話,那麽這樣寫可以保證腳本使用虛擬環境中的 Python 來執行#!/usr/bin/python
表示寫死了就是要用 /usr/bin/python 這個目錄下的python 來執行腳本,這樣程序的可移植性就差了,如果此路徑下的 Python 命令不存在就會報錯
因此,推薦使用 #!/usr/bin/env python
2. #-*- coding = utf-8 -*-
格式:滿足正則表達式:"coding[:=]\s*([-\w.]+)"
熟悉正則表達式的同學可以寫出以下符合要求的類型聲明:
coding: utf-8
coding=utf-8
coding= utf-8
encoding:utf-8
crifanEncoding=utf-8
- 如果沒有此文件編碼類型的申明,則 python 2.X 默認以 ASCII 編碼去處理,python 3.X默認為 utf-8 (unicode的延伸)
- 聲明文件類型的語句必須寫在文件的第一行或者第二行
Python頭部2行 #!/usr/bin/python 和 #!/usr/bin/env 的區別 以及編碼方式的指定 2018-10-23