溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中怎么獲取相對(duì)路徑和絕對(duì)路徑

發(fā)布時(shí)間:2021-07-10 15:43:13 來源:億速云 閱讀:881 作者:Leah 欄目:編程語言

Python中怎么獲取相對(duì)路徑和絕對(duì)路徑,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

Python是一門跨平臺(tái)的語言,但并不是說你用Python隨便寫的一個(gè)程序就能在不同的平臺(tái)都能運(yùn)行.而相對(duì)路徑和絕對(duì)路徑是這方 面的典型(相對(duì)路徑在Windows下可行,而在Linux下提示找不到相應(yīng)的文件路徑),因?yàn)長inux和Windows本身結(jié)構(gòu)就存在著較大的差異, 而這差異也給寫擴(kuò)平臺(tái)的程序造成了困難.我自己嘗試過兩種方法來解決這個(gè)問題,下邊就與大家一起分享.

The first one: 程 序中涉及路徑時(shí)先區(qū)分系統(tǒng)類型,再根據(jù)不同的操作系統(tǒng)作不同的處理.Python目前支持以下操作系統(tǒng)的識(shí)別: ‘posix’, ‘nt’, ‘mac’, ‘os2′, ‘ce’, ‘java’, ‘riscos’,我也沒有完全試驗(yàn)過,不過目前主流的應(yīng)用系統(tǒng)是Windows,Linux也在蓬勃的發(fā)展,所以我們主要區(qū)分它們就行了.一般我用一個(gè) if…else語句來區(qū)分,菜鳥的做法,老鳥們?cè)趺醋瞿?/p>

if os.name == ”nt”

Windows路徑…elseLinux路徑…小節(jié): 這種方法較笨,非常不靈活,但這樣做解決了同一個(gè)程序可以同時(shí)在Windows和Linux下運(yùn)行而不需要改動(dòng)的問題

The second one: 這 種方法相對(duì)靈活的將相對(duì)路徑轉(zhuǎn)化為不同操作系統(tǒng)的絕對(duì)路徑,我相對(duì)喜歡這種方法.for example: 你寫了一個(gè)小系統(tǒng),所有文件和子文件夾都放在一個(gè)f:\school的主文件夾里,這個(gè)主文件夾下有class,teacher,student,log 等文件夾,有main.py這個(gè)小系統(tǒng)的主文件,還有好一些subfile.py的文件.

而主文件夾在Linux的路徑可能為/home/kkk /school,其他相對(duì)的路徑和Windows中相同.那么怎樣統(tǒng)一他們呢?在main.py中定義一個(gè)全局變量path,賦值于path = os.path.abspath(os.path.dirname(sys.argv[0])),這個(gè)path在Windows下運(yùn)行它的值 為”f:/school”,而在Linux下運(yùn)行它的值為”/home/kkk/school”,寫到這估計(jì)大家也知道我想干啥了,如果在程序中要訪問 (讀寫)日志文件可以用path+”/log/kk.log”來表示文件的路徑.

小節(jié): 此方法相對(duì)于***種方法靈活,需要注意的是path+”/log/kk.log”,我們一般喜歡用path+\\log\\kk.log這樣的方式,但這 樣在Linux中就行不通了,提示找不到文件路徑.注: 網(wǎng)上還有在主程序中加入sys.path.append(path),然后系統(tǒng)中訪問文件用相對(duì)路徑的方法,但我試了一下好像有問題(大家可以嘗試一下, 讓我也分享你們的勞動(dòng)成果)網(wǎng)站建設(shè)。

關(guān)于Python中怎么獲取相對(duì)路徑和絕對(duì)路徑問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI