1. 程式人生 > >Python頭部2行 #!/usr/bin/python 和 #!/usr/bin/env 的區別 以及編碼方式的指定 2018-10-23

Python頭部2行 #!/usr/bin/python 和 #!/usr/bin/env 的區別 以及編碼方式的指定 2018-10-23

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