美文网首页
Python头部2行 #!/usr/bin/python 和

Python头部2行 #!/usr/bin/python 和

作者: 默写年华Antifragile | 来源:发表于2018-11-03 15:39 被阅读10次

    参考文档
    【整理】关于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 和

          本文链接:https://www.haomeiwen.com/subject/rgvozftx.html