1. 程式人生 > >Python os.path, sys.path

Python os.path, sys.path

1.sys.path —— 動態地改變Python搜尋路徑

如果python中匯入的package或module不在環境變數PATH中,那麼可以使用sys.path將要匯入的package或module加入到PATH環境變數中。

  1. import sys  
  2. sys.path.append(’引用模組的地址')  
  3.   
  4. #或者  
  5. import sys  
  6. sys.path.insert(0, '引用模組的地址')  

      sys.path是個列表,所以在末尾新增目錄是很容易的,用sys.path.append就行了。當這個append執行完之後,新目錄即時起效,以後的每次import操作都可能會檢查這個目錄。如同解決方案所示,可以選擇用sys.path.insert(0,…)這樣新新增的目錄會優先於sys.path中的其他目錄被import檢查。

 

      即使sys.path中存在重複,或者一個不存在的目錄被不小心新增進來,也沒什麼大不了,Python的import語句非常聰明,它會自己應付這類問題。但是,如果每次import時都發生這種錯誤(比如,重複的不成功搜尋,作業系統提示的需要進一步處理的錯誤),我們會被迫付出一點小小的效能代價。

      程式向sys.path新增的目錄只會在此程式的生命週期之內有效,其他所有的對sys.path的動態操作也是如此。
 

2.python中獲取當前工作目錄

  1. import os  
  2. curDir = os.getcwd()  

備註:os.getcwd()返回的是執行命令時所在的目錄,而不是指令碼本身所在的目錄

 

3.os.path模組

  1. os.path.abspath(path)  #返回絕對路徑  
  2. os.path.split(path     #將path分割成目錄和檔名二元組返回  
  3. os.path.dirname(path)  #返回path的目錄。其實就是os.path.split(path)的第一個元素  
  4. os.path.basename(path) #返回path最後的檔名  
  5. os.path.exists(path)   #如果path存在,返回True;如果path不存在,返回False  
  6. os.path.isabs(path)    #如果path是絕對路徑,返回True  
  7. os.path.isfile(path)   #如果path是一個存在的檔案,返回True。否則返回False  
  8. os.path.isdir(path)    #如果path是一個存在的目錄,則返回True。否則返回False  
  9. os.path.getatime(path) #返回path所指向的檔案或者目錄的最後存取時間  
  10. os.path.getmtime(path) #返回path所指向的檔案或者目錄的最後修改時間   
  11. s.path.join(path1[, path2[, ...]])  #將多個路徑組合後返回,第一個絕對路徑之前的引數將被忽略。  
  12. >>> os.path.join('c:\\', 'csv', 'test.csv')  
  13. 'c:\\csv\\test.csv'  
  14. >>> os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv')  
  15. 'c:\\csv\\test.csv'  
  16. >>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')  
  17. '/home/aa/bb/c'