python跨平台程式之 ——淺談python的相對路徑與絕對路徑[zz]

來源:互聯網
上載者:User
 
python跨平台程式之 ——淺談python的相對路徑與絕對路徑[zz]

轉載請註明出處http://blog.csdn.net/porcupinefinal/(尊重勞動成果)

對於python入門不久的同志這可能是一個比較頭疼的問題,但對老鳥來說可能已經是老生常談了。由於網上關於這方面的資料不多,所以這道菜更主要是為小鳥準備的,雖然我也還是一支小鳥 :)。也歡迎老鳥們品嘗,並提出您們寶貴的意見。

Python 是一門跨平台的語言,但並不是說你用python隨便寫的一個程式就能在不同的平台都能運行。而相對路徑和絕對路徑是這方面的典型(至少我這麼認為)(相 對路徑在windows下可行,而在linux下提示找不到相應的檔案路徑),因為linux和windows本身結構就存在著較大的差異,而這差異也給 寫擴平台的程式造成了困難。我自己嘗試過兩種方法來解決這個問題,下邊就與大家一起分享。

The first one 程 序中涉及路徑時先區分系統類別型,再根據不同的作業系統作不同的處理。Python目前支援以下作業系統的識別:'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos',我也沒有完全實驗過,不過目前主流的應用系統是windows,linux和unix也在蓬勃的發展,所以我們主要區分它們就行了。一 般我用一個if…else語句來區分,菜鳥的做法,老鳥們怎麼做呢?

if os.name == ”nt”:
    windows路徑……
else:
    Linux路徑……

小節:這種方法較笨,非常不靈活,但這樣做解決了同一個程式可以同時在windows和linux下運行而不需要改動的問題

The second one 這 種方法相對靈活的將相對路徑轉化為不同作業系統的絕對路徑,我相對喜歡這種方法 :)。 For example :你寫了一個小系統,所有檔案和子檔案夾都放在一個f:/school的主資料夾裡,這個主資料夾下有class、teacher、student、 log等檔案夾,有main.py這個小系統的主檔案,還有好一些subfile.py的檔案。而主資料夾在linux的路徑可能為/home/kkk /school,其他相對的路徑和windows中相同。那麼怎樣同一他們呢?在main.py中定義一個全域變數path,賦值於path = os.path.abspath(os.path.dirname(sys.argv[0]))。這個path在windows下運行它的值為 “f:/school”,而在linux下運行它的值為“/home/kkk/school”,寫到這估計大家也知道我想幹啥了,如果在程式中要訪問(讀 寫)記錄檔可以用path+“/log/kk.log”來表示檔案的路徑 :)。

小節:此方法相對於第一種方法靈活,需要注意的是path+“/log/kk.log”,我們一般喜歡用path+//log//kk.log這樣的方式,但這樣在linux中就行不通了,提示找不到檔案路徑

註:網上還有在主程式中加入sys.path.append(path),然後系統中訪問檔案用相對路徑一說,但我試了一下好像有問題(大家可以嘗試一下,讓我也分享你們的勞動成果:))

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.