os os.path模塊

#當前文件的路徑

pwd?=?os.getcwd()

#當前文件的父路徑

father_path=os.path.abspath(os.path.dirname(pwd)+os.path.sep+".")

#當前文件的前兩級目錄

grader_father=os.path.abspath(os.path.dirname(pwd)+os.path.sep+"..")


最近看到python的os模塊,以及os,os.path的具體用法,有些不明白,在此記錄一下。?

python獲取文件的上一級目錄:取文件所在目錄的上一級目錄?

os.path.pardir:是父目錄,?

os.path.abspath:是獲取絕對路徑?


import os ,os.path

os.path.abspath("__file__") # 獲取當前文件的絕對路徑

os.path.dirname(os.path.abspath("__file__")) # 獲取當前文件所在的目錄名稱

?os.path.pardir # 獲取相對于文件當前目錄的上級目錄

print os.path.abspath(os.path.pardir) # 獲取相對于文件當前目錄的上級目錄的絕對路徑print os.path.join(os.path.dirname("__file__"),os.path.pardir) # 將文件的當前目錄和文件當前目錄的上級目錄進行合并,取交集print os.path.abspath(os.path.join(os.path.dirname("__file__"),os.path.pardir))# 對應的輸出為:D:\Python\__file__

D:\Python

..? #? “..”這是上級目錄的表示方法D:\

..? # 取 D:\Python\__file__ 和 D:\的交集,就是D:\,也就是"..",還是os.path.pardir的值。也就是文件當前目錄的上一級(父級)目錄。D:\? # 也就是獲取".."的絕對路徑。

還有幾個常見的命令:?

python中對文件、文件夾(文件操作函數)的操作需要涉及到os模塊和shutil模塊。?

得到當前工作目錄,即當前Python腳本工作的目錄路徑: os.getcwd()?

返回指定目錄下的所有文件和目錄名:os.listdir()?

函數用來刪除一個文件:os.remove()?

刪除多個目錄:os.removedirs(r“c:\python”)?

檢驗給出的路徑是否是一個文件:os.path.isfile()?

檢驗給出的路徑是否是一個目錄:os.path.isdir()?

判斷是否是絕對路徑:os.path.isabs()?

檢驗給出的路徑是否真地存:os.path.exists()?

返回一個路徑的目錄名和文件名:os.path.split() eg os.path.split(‘/home/swaroop/byte/code/poem.txt’) 結果:(‘/home/swaroop/byte/code’, ‘poem.txt’)

分離擴展名:os.path.splitext()?

獲取路徑名:os.path.dirname()?

獲取文件名:os.path.basename()?

運行shell命令: os.system()?

讀取和設置環境變量:os.getenv() 與os.putenv()?

給出當前平臺使用的行終止符:os.linesep Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’?

指示你正在使用的平臺:os.name 對于Windows,它是’nt’,而對于Linux/Unix用戶,它是’posix’?

重命名:os.rename(old, new)?

創建多級目錄:os.makedirs(r“c:\python\test”)?

創建單個目錄:os.mkdir(“test”)?

獲取文件屬性:os.stat(file)?

修改文件權限與時間戳:os.chmod(file)?

終止當前進程:os.exit()?

獲取文件大小:os.path.getsize(filename)

參考網址:http://blog.csdn.net/longshenlmj/article/details/13294871

下面結合具體的代碼來解釋一下它們的應用:

importos,os.pathasosp

def? check_dir(path):

""" make sure the dir specified by path got created """

d = osp.abspath(osp.join(path, osp.pardir))

ifnotosp.exists(d):? ? ? ??

os.makedirs(d)


情況1:在一個目錄下面只有文件,沒有文件夾,這個時候可以使用os.listdir

import os

path = r'C:\Users\Administrator\Desktop\file'forfilenamein os.listdir(path):

? ? print(os.path.join(path,filename))

情況2:遞歸的情況,一個目錄下面既有目錄也有文件,使用os.walk:

import os

path = r'C:\Users\Administrator\Desktop\file'fordirpath,dirnames,filenamesin os.walk(path):

? ? print(dirpath,dirnames,filenames)

os.walk輸入一個路徑名稱,以yield的方式(其實是一個生成器)返回一個三元組?dirpath, dirnames, filenames,

dirpath為目錄的路徑,為一個字符串。比如上面的?C:\Users\Administrator\Desktop\file和C:\Users\Administrator\Desktop\file\file1等。

dirnames列出了目錄路徑下面所有存在的目錄的名稱。比如在?C:\Users\Administrator\Desktop\file下面有兩個目錄:file1和file2,那么它就列出了這個目錄路徑下的目錄名稱。

filenames列出了目錄路徑下面所有文件的名稱。同樣在?C:\Users\Administrator\Desktop\file下面有兩個文件file_test1.txt和file_test2 .txt,那么程序將會列出這兩個文件名。

import os

path = r'C:\Users\Administrator\Desktop\file'fordirpath,dirnames,filenamesin os.walk(path):

? ? forfilenamein filenames:

? ? ? ? print(os.path.join(dirpath,filename))



python中os.path常用模塊


os.path.sep:路徑分隔符 linux下就用這個了’/’

os.path.altsep: 根目錄

os.path.curdir:當前目錄

os.path.pardir:父目錄

os.path.abspath(path):絕對路徑

os.path.join(): 常用來鏈接路徑

os.path.split(path): 把path分為目錄和文件兩個部分,以列表返回

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容