最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python獲取腳本所在目錄的正確方法

 更新時間:2014年04月15日 11:54:03   作者:  
這篇文章主要介紹了Python獲取腳本所在目錄的正確方法,需要的朋友可以參考下

1.以前的方法

如果是要獲得程序運行的當(dāng)前目錄所在位置,那么可以使用os模塊的os.getcwd()函數(shù)。

如果是要獲得當(dāng)前執(zhí)行的腳本的所在目錄位置,那么需要使用sys模塊的sys.path[0]變量或者sys.argv[0]來獲得。實際上sys.path是Python會去尋找模塊的搜索路徑列表,sys.path[0]和sys.argv[0]是一回事因為Python會自動把sys.argv[0]加入sys.path。

具體來說,如果你在C:\test目錄下執(zhí)行python getpath\getpath.py,那么os.getcwd()會輸出“C:\test”,sys.path[0]會輸出“C:\test\getpath”。

更特別地,如果你用py2exe模塊把Python腳本編譯為可執(zhí)行文件,那么sys.path[0]的輸出還會變化:
如果把依賴庫用默認(rèn)的方式打包為zip文件,那么sys.path[0]會輸出“C:\test\getpath\libarary.zip”;
如果在setup.py里面指定zipfile=None參數(shù),依賴庫就會被打包到exe文件里面,那么sys.path[0]會輸出“C:\test\getpath\getpath.exe”。

2.正確的方法

但以上這些其實都不是腳本文件所在目錄的位置。
比如C:\test目錄下還有一個名為sub的目錄;C:\test目錄下有g(shù)etpath.py,sub目錄下有 sub_path.py,getpath.py調(diào)用sub_path.py;我們在C:\test下執(zhí)行g(shù)etpath.py。如果我們在 sub_path.py里面使用sys.path[0],那么其實得到的是getpath.py所在的目錄路徑“C:\test”,因為Python虛擬 機是從getpath.py開始執(zhí)行的。如果想得到sub_path.py的路徑,那么得這樣:
os.path.split(os.path.realpath(__file__))[0]

其中__file__雖然是所在.py文件的完整路徑,但是這個變量有時候返回相對路徑,有時候返回絕對路徑,因此 還要用os.path.realpath()函數(shù)來處理一下。也即在這個例子里,os.path.realpath(__file__)輸出是 “C:\test\sub\sub_path.py”,而os.path.split(os.path.realpath(__file__))[0]輸 出才是“C:\test\sub”。

3.實例說明

總之,舉例來講,os.getcwd()、sys.path[0] (sys.argv[0])和__file__的區(qū)別是這樣的:
假設(shè)目錄結(jié)構(gòu)是:

復(fù)制代碼 代碼如下:

C:test

  [dir] getpath

    [file] path.py
    [dir] sub

      [file] sub_path.py


然后我們在C:\test下面執(zhí)行python getpath/path.py,這時sub_path.py里面與各種用法對應(yīng)的值其實是:
os.getcwd() “C:\test”,取的是起始執(zhí)行目錄
sys.path[0]或sys.argv[0] “C:\test\getpath”,取的是被初始執(zhí)行的腳本的所在目錄
os.path.split(os.path.realpath(__file__))[0] “C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目錄

相關(guān)文章

  • 終止python代碼運行的3種方式詳析

    終止python代碼運行的3種方式詳析

    這篇文章主要給大家介紹了關(guān)于終止python代碼運行的3種方式,python是解釋運行的程序,程序進入死循環(huán)或者其它異常都會導(dǎo)致程序無法正常結(jié)束,需要的朋友可以參考下
    2023-07-07
  • Python enumerate索引迭代代碼解析

    Python enumerate索引迭代代碼解析

    這篇文章主要介紹了Python enumerate索引迭代代碼解析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • windows下python和pip安裝教程

    windows下python和pip安裝教程

    這篇文章主要為大家詳細(xì)介紹了windows下Python和pip安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python實例方法、類方法、靜態(tài)方法區(qū)別詳解

    Python實例方法、類方法、靜態(tài)方法區(qū)別詳解

    這篇文章主要介紹了Python實例方法、類方法、靜態(tài)方法區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Pandas的AB BA類型數(shù)據(jù)框去重復(fù)

    Pandas的AB BA類型數(shù)據(jù)框去重復(fù)

    這篇文章主要為大家介紹了Pandas的AB BA類型數(shù)據(jù)框去重復(fù)實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • python 實現(xiàn)A*算法的示例代碼

    python 實現(xiàn)A*算法的示例代碼

    本篇文章主要介紹了python 實現(xiàn)A*算法的示例代碼,A*作為最常用的路徑搜索算法,值得我們?nèi)ド羁痰难芯浚哂幸欢ǖ膮⒖純r值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python自動化完成tb喵幣任務(wù)的操作方法

    Python自動化完成tb喵幣任務(wù)的操作方法

    2019雙十一,tb推出了新的活動,商店喵幣,看了一下每天都有幾個任務(wù)來領(lǐng)取喵幣,從而升級店鋪賺錢,然而我既想賺紅包又不想干苦力,遂使用python來進行手機自動化操作,需要的朋友跟隨小編一起看看吧
    2019-10-10
  • python的reverse函數(shù)翻轉(zhuǎn)結(jié)果為None的問題

    python的reverse函數(shù)翻轉(zhuǎn)結(jié)果為None的問題

    這篇文章主要介紹了python的reverse函數(shù)翻轉(zhuǎn)結(jié)果為None的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python3 常見解密加密算法實例分析【base64、MD5等】

    python3 常見解密加密算法實例分析【base64、MD5等】

    這篇文章主要介紹了python3 常見解密加密算法,結(jié)合實例形式分析了Python的base64模塊加密,以及基于pycrypto模塊的MD5加密等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • Django實現(xiàn)發(fā)送郵件功能

    Django實現(xiàn)發(fā)送郵件功能

    這篇文章主要介紹了Django實現(xiàn)發(fā)送郵件功能,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07

最新評論

柞水县| 威海市| 蓬溪县| 新干县| 浑源县| 英吉沙县| 张北县| 岱山县| 临夏市| 潮安县| 栖霞市| 汉中市| 寿宁县| 陇川县| 涿州市| 明光市| 济南市| 海口市| 临高县| 鲁山县| 常宁市| 海安县| 宜兰市| 奎屯市| 华安县| 金寨县| 灵璧县| 柯坪县| 岑巩县| 贵溪市| 宕昌县| 高平市| 赤壁市| 岚皋县| 泰顺县| 基隆市| 三门峡市| 兴隆县| 霍邱县| 象州县| 岫岩|