1. 程式人生 > >python 檔案、目錄屬性的操作os.path等os模組函式

python 檔案、目錄屬性的操作os.path等os模組函式

os.path.abspath(path) #返回絕對路徑 os.path.basename(path) #返回檔名 os.path.commonprefix(list) #返回list(多個路徑)中,所有path共有的最長的路徑。 os.path.dirname(path) #返回檔案路徑 os.path.exists(path)  #路徑存在則返回True,路徑損壞返回False os.path.lexists  #路徑存在則返回True,路徑損壞也返回True os.path.expanduser(path)  #把path中包含的"~"和"~user"轉換成使用者目錄 os.path.expandvars(path)  #根據環境變數的值替換path中包含的”$name”和”${name}” os.path.getatime(path)  #返回最後一次進入此path的時間。 os.path.getmtime(path)  #返回在此path下最後一次修改的時間。 os.path.getctime(path)  #返回path的大小 os.path.getsize(path)  #返回檔案大小,如果檔案不存在就返回錯誤 os.path.isabs(path)  #判斷是否為絕對路徑 os.path.isfile(path)  #判斷路徑是否為檔案 os.path.isdir(path)  #判斷路徑是否為目錄 os.path.islink(path)  #判斷路徑是否為連結 os.path.ismount(path)  #判斷路徑是否為掛載點() os.path.join(path1[, path2[, ...]])  #把目錄和檔名合成一個路徑 os.path.normcase(path)  #轉換path的大小寫和斜槓 os.path.normpath(path)  #規範path字串形式 os.path.realpath(path)  #返回path的真實路徑 os.path.relpath(path[, start])  #從start開始計算相對路徑 os.path.samefile(path1, path2)  #判斷目錄或檔案是否相同 os.path.sameopenfile(fp1, fp2)  #判斷fp1和fp2是否指向同一檔案 os.path.samestat(stat1, stat2)  #判斷stat tuple stat1和stat2是否指向同一個檔案 os.path.split(path)  #把路徑分割成dirname和basename,返回一個元組 os.path.splitdrive(path)   #一般用在windows下,返回驅動器名和路徑組成的元組 os.path.splitext(path)  #分割路徑,返回路徑名和副檔名的元組 os.path.splitunc(path)  #把路徑分割為載入點與檔案 os.path.walk(path, visit, arg)  #遍歷path,進入每個目錄都呼叫visit函式,visit函式必須有 3個引數(arg, dirname, names),dirname表示當前目錄的目錄名,names代表當前目錄下的所有 檔名,args則為walk的第三個引數 os.path.supports_unicode_filenames  #設定是否支援unicode路徑名

os.pardir  #當前目錄的父目錄

os.path.join(script_dir, os.pardir, os.pardir)  #script_dir的祖父目錄,例如:script_dir是F:\1\2\3,那麼os.path.join(script_dir, os.pardir, os.pardir)是F:\1\2\3\..\..

os.path.abspath(os.path.join(script_dir, os.pardir, os.pardir)) #script_dir的祖父目錄,例如:script_dir是F:\1\2\3,那麼os.path.abspath(os.path.join(script_dir, os.pardir, os.pardir))

是F:\1

os 模組提供了一個統一的作業系統介面函式, 這些介面函式通常是平臺指定的,os 模組能在不同作業系統平臺如 nt 或 posix中的特定函式間自動切換,從而能實現跨平臺操作

1.檔案操作

build-in函式 open 實現檔案建立, 開啟, 修改檔案的操作

import os

import string

def replace(file, search_for, replace_with):

# replace strings in a text file

back = os.path.splitext(file)[0] + ".bak"

temp = os.path.splitext(file)[0] + ".tmp"

try:

# remove old temp file, if any

os.remove(temp)

except os.error:

pass

fi = open(file) #

fo = open(temp, "w")        #

for s in fi.readlines():

fo.write(string.replace(s, search_for, replace_with))

fi.close()

fo.close()

try:

# remove old backup file, if any

os.remove(back)

except os.error:

pass

# rename original to backup...

os.rename(file, back)

# ...and temporary to original

os.rename(temp, file)

# try it out!

file = "c:\samples\sample.txt"

replace(file, "hello", "tjena")# search for the string 'hello' and replace with 'tjena

replace(file, "tjena", "hello")

2. 目錄操作

os 模組包含了許多對目錄操作的函式

listdir 函式返回給定目錄下的所有檔案(包括目錄)

import os

for file in os.listdir("c:\qtest"):

print file

getdir 獲取當前目錄

chdir 改變當前路徑

cwd = os.getcwd()

print "1", cwd

# go down

os.chdir("c:\qtest")

print "2", os.getcwd()

# go back up

os.chdir(os.pardir)#返回當前目錄的父目錄

print "3", os.getcwd()

makedirs removedirs 生成和刪除目錄

makedirs可以生成多層遞迴目錄, removedirs可以刪除多層遞迴的空目錄,若目錄中有檔案則無法刪除

import os

os.makedirs("c:\\test\\multiple\\levels")

fp.write("inspector praline")

fp.close()

# remove the file

os.remove("c:\\test\\multiple\\levels\\file.txt")

# and all empty directories above it

os.removedirs("c:\\test\\multiple\\levels")

mkdir  rmdir只能處理單級目錄操作.

若要刪除非空目錄, 可使用 shutil模組中的rmtree函式

3. 檔案屬性的操作

import os

import time

file = 'c:\qtest\editor.pyc'

st = os.stat(file)

print "state", file

def dump(st):

mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime = st

print "- size:", size, "bytes"

print "- owner:", uid, gid

print "- created:", time.ctime(ctime)

print "- last accessed:", time.ctime(atime)

print "- last modified:", time.ctime(mtime)

print "- mode:", oct(mode)

print "- inode/dev:", ino, dev

print dir(st)

print        

dump(st)

# print

fp = open(file)

st = os.fstat(fp.fileno())

print "fstat", file

dump(st)

remark: os.stat(path/file)返回檔案的對應屬性值st_mode (protection bits), st_ino (inode number), st_dev (device), st_nlink (number of hard links), st_uid (user id of owner), st_gid (group id of owner), st_size (size of file, in bytes), st_atime (time of most recent access), st_mtime (time of most recent content modification), st_ctime (platform dependent; time of most recent metadata change on Unix, or the time of creation on Windows):

os.fstat(path/file)

Return status for file descriptor fd, like stat().