python __file__ 和 sy

发布时间:2019-08-26 07:19:56编辑:auto阅读(1760)

    大部分情况下 __file__属性和sys.argv[0]的值是一样的,但是在不是使用python script.py形式执行脚本的时候(如 import, execfile()),他们的值就不一样了

    例子:

    [root@localhost ~]# cat empty.py
    #!/usr/bin/env python
    # -*- coding=utf-8 -*-
    import sys
    print 'from import __file__ is ' ,__file__
    print 'from import sys.argv[0] is ' ,sys.argv[0]
    [root@localhost ~]# cat test.py
    #!/usr/bin/env python
    # -*- coding=utf-8 -*-
    import sys
    import empty
    print 'from main', __file__
    print 'from main', sys.argv[0]


    输出结果:

    [root@localhost ~]# ./test.py

    from import __file__ is /root/empty.py

    from import sys.argv[0] is ./test.py

    from main ./test.py

    from main ./test.py

    Tips:当第二次执行脚本的时候第一行输出将不是empty这个脚本,会是对应的pyc文件

关键字