国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

python解惑之__file__與argv[0]

2019-11-14 17:36:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在python下,獲取當(dāng)前執(zhí)行主腳本的方法有兩個(gè):sys.argv[0]和__file__。

sys.argv[0]

獲取主執(zhí)行文件路徑的最佳方法是用sys.argv[0],它可能是一個(gè)相對(duì)路徑,所以再取一下abspath是保險(xiǎn)的做法,像這樣:

import os,sysdirname, filename = os.path.split(os.path.abspath(sys.argv[0]))

__file__

__file__ 是用來(lái)獲得模塊所在的路徑的,這可能得到的是一個(gè)相對(duì)路徑,比如在腳本test.py中寫入:

#!/usr/bin/env python
print __file__

而在Python控制臺(tái)下,直接使用print __file__是會(huì)導(dǎo)致  name ‘__file__’ is not defined錯(cuò)誤的,因?yàn)檫@時(shí)沒(méi)有在任何一個(gè)腳本下執(zhí)行,自然沒(méi)有 __file__的定義了。

__file__和argv[0]差異

在主執(zhí)行文件中時(shí),兩者沒(méi)什么差異,不過(guò)要是在不同的文件下,就不同了,下面示例:

C:/junk/so>type /junk/so/scriptpath/script1.pyimport sys, osprint "script: sys.argv[0] is", repr(sys.argv[0])print "script: __file__ is", repr(__file__)print "script: cwd is", repr(os.getcwd())import whereutilswhereutils.show_where() C:/junk/so>type /python26/lib/site-packages/whereutils.pyimport sys, osdef show_where():    print "show_where: sys.argv[0] is", repr(sys.argv[0])    print "show_where: __file__ is", repr(__file__)    print "show_where: cwd is", repr(os.getcwd()) C:/junk/so>/python26/python scriptpath/script1.pyscript: sys.argv[0] is 'scriptpath//script1.py'script: __file__ is 'scriptpath//script1.py'script: cwd is 'C://junk//so'show_where: sys.argv[0] is 'scriptpath//script1.py'show_where: __file__ is 'C://python26//lib//site-packages//whereutils.pyc'show_where: cwd is 'C://junk//so'

所以一般來(lái)說(shuō),argv[0]要更可靠些。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 舟山市| 台南市| 托克托县| 菏泽市| 庆城县| 沅陵县| 佛山市| 乐昌市| 英山县| 和林格尔县| 吴桥县| 安仁县| 比如县| 徐汇区| 修武县| 富蕴县| 图片| 屏东市| 紫阳县| 台中县| 湘潭市| 稻城县| 舒城县| 岳普湖县| 威宁| 阜新| 高要市| 清水县| 南开区| 乐清市| 合川市| 会宁县| 高唐县| 荣昌县| 宝清县| 绥化市| 兴隆县| 上林县| 永川市| 牟定县| 安国市|