#當(dāng)前文件的路徑
pwd?=?os.getcwd()
#當(dāng)前文件的父路徑
father_path=os.path.abspath(os.path.dirname(pwd)+os.path.sep+".")
#當(dāng)前文件的前兩級(jí)目錄
grader_father=os.path.abspath(os.path.dirname(pwd)+os.path.sep+"..")
最近看到python的os模塊塞赂,以及os,os.path的具體用法,有些不明白晃听,在此記錄一下稠项。?
python獲取文件的上一級(jí)目錄:取文件所在目錄的上一級(jí)目錄?
os.path.pardir:是父目錄天揖,?
os.path.abspath:是獲取絕對(duì)路徑?
import os ,os.path
os.path.abspath("__file__") # 獲取當(dāng)前文件的絕對(duì)路徑
os.path.dirname(os.path.abspath("__file__")) # 獲取當(dāng)前文件所在的目錄名稱
?os.path.pardir # 獲取相對(duì)于文件當(dāng)前目錄的上級(jí)目錄
print os.path.abspath(os.path.pardir) # 獲取相對(duì)于文件當(dāng)前目錄的上級(jí)目錄的絕對(duì)路徑print os.path.join(os.path.dirname("__file__"),os.path.pardir) # 將文件的當(dāng)前目錄和文件當(dāng)前目錄的上級(jí)目錄進(jìn)行合并,取交集print os.path.abspath(os.path.join(os.path.dirname("__file__"),os.path.pardir))# 對(duì)應(yīng)的輸出為:D:\Python\__file__
D:\Python
..? #? “..”這是上級(jí)目錄的表示方法D:\
..? # 取 D:\Python\__file__ 和 D:\的交集谓罗,就是D:\,也就是".."季二,還是os.path.pardir的值檩咱。也就是文件當(dāng)前目錄的上一級(jí)(父級(jí))目錄。D:\? # 也就是獲取".."的絕對(duì)路徑胯舷。
還有幾個(gè)常見的命令:?
python中對(duì)文件刻蚯、文件夾(文件操作函數(shù))的操作需要涉及到os模塊和shutil模塊。?
得到當(dāng)前工作目錄桑嘶,即當(dāng)前Python腳本工作的目錄路徑: os.getcwd()?
返回指定目錄下的所有文件和目錄名:os.listdir()?
函數(shù)用來刪除一個(gè)文件:os.remove()?
刪除多個(gè)目錄:os.removedirs(r“c:\python”)?
檢驗(yàn)給出的路徑是否是一個(gè)文件:os.path.isfile()?
檢驗(yàn)給出的路徑是否是一個(gè)目錄:os.path.isdir()?
判斷是否是絕對(duì)路徑:os.path.isabs()?
檢驗(yàn)給出的路徑是否真地存:os.path.exists()?
返回一個(gè)路徑的目錄名和文件名:os.path.split() eg os.path.split(‘/home/swaroop/byte/code/poem.txt’) 結(jié)果:(‘/home/swaroop/byte/code’, ‘poem.txt’)
分離擴(kuò)展名:os.path.splitext()?
獲取路徑名:os.path.dirname()?
獲取文件名:os.path.basename()?
運(yùn)行shell命令: os.system()?
讀取和設(shè)置環(huán)境變量:os.getenv() 與os.putenv()?
給出當(dāng)前平臺(tái)使用的行終止符:os.linesep Windows使用’\r\n’炊汹,Linux使用’\n’而Mac使用’\r’?
指示你正在使用的平臺(tái):os.name 對(duì)于Windows,它是’nt’逃顶,而對(duì)于Linux/Unix用戶讨便,它是’posix’?
重命名:os.rename(old充甚, new)?
創(chuàng)建多級(jí)目錄:os.makedirs(r“c:\python\test”)?
創(chuàng)建單個(gè)目錄:os.mkdir(“test”)?
獲取文件屬性:os.stat(file)?
修改文件權(quán)限與時(shí)間戳:os.chmod(file)?
終止當(dāng)前進(jìn)程:os.exit()?
獲取文件大小:os.path.getsize(filename)
參考網(wǎng)址:http://blog.csdn.net/longshenlmj/article/details/13294871
下面結(jié)合具體的代碼來解釋一下它們的應(yīng)用:
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:在一個(gè)目錄下面只有文件津坑,沒有文件夾,這個(gè)時(shí)候可以使用os.listdir
import os
path = r'C:\Users\Administrator\Desktop\file'forfilenamein os.listdir(path):
? ? print(os.path.join(path,filename))
情況2:遞歸的情況傲霸,一個(gè)目錄下面既有目錄也有文件疆瑰,使用os.walk:
import os
path = r'C:\Users\Administrator\Desktop\file'fordirpath,dirnames,filenamesin os.walk(path):
? ? print(dirpath,dirnames,filenames)
os.walk輸入一個(gè)路徑名稱,以yield的方式(其實(shí)是一個(gè)生成器)返回一個(gè)三元組?dirpath, dirnames, filenames昙啄,
dirpath為目錄的路徑穆役,為一個(gè)字符串。比如上面的?C:\Users\Administrator\Desktop\file和C:\Users\Administrator\Desktop\file\file1等梳凛。
dirnames列出了目錄路徑下面所有存在的目錄的名稱耿币。比如在?C:\Users\Administrator\Desktop\file下面有兩個(gè)目錄:file1和file2,那么它就列出了這個(gè)目錄路徑下的目錄名稱韧拒。
filenames列出了目錄路徑下面所有文件的名稱淹接。同樣在?C:\Users\Administrator\Desktop\file下面有兩個(gè)文件file_test1.txt和file_test2 .txt,那么程序?qū)?huì)列出這兩個(gè)文件名叛溢。
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下就用這個(gè)了’/’
os.path.altsep: 根目錄
os.path.curdir:當(dāng)前目錄
os.path.pardir:父目錄
os.path.abspath(path):絕對(duì)路徑
os.path.join(): 常用來鏈接路徑
os.path.split(path): 把path分為目錄和文件兩個(gè)部分塑悼,以列表返回