zzbb 发表于 2018-8-12 10:59:05

python __file__ 和 sys.argv[0] 的区别

  大部分情况下 __file__属性和sys.argv的值是一样的,但是在不是使用python script.py形式执行脚本的时候(如 import, execfile()),他们的值就不一样了
  例子:
# cat empty.py  
#!/usr/bin/env python
  
# -*- coding=utf-8 -*-
  
import sys
  
print 'from import __file__ is ' ,__file__
  
print 'from import sys.argv is ' ,sys.argv
  
# cat test.py
  
#!/usr/bin/env python
  
# -*- coding=utf-8 -*-
  
import sys
  
import empty
  
print 'from main', __file__
  
print 'from main', sys.argv
  输出结果:
  # ./test.py
  from import __file__ is /root/empty.py
  from import sys.argv is ./test.py
  from main ./test.py
  from main ./test.py
  Tips:当第二次执行脚本的时候第一行输出将不是empty这个脚本,会是对应的pyc文件
页: [1]
查看完整版本: python __file__ 和 sys.argv[0] 的区别