#當前文件的路徑
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分為目錄和文件兩個部分,以列表返回