檔案是資料在外部媒體上的資料的集合,對于檔案在Linux系統上包括普通檔案,目錄檔案,二進制檔案,裝置檔案等。
檔案的打開或者建立
方法:open(‘file_name’,’打開方式’[,buf_size])
buf_size:參數指的是檔案緩存區的大小,0代表不緩存,1代表緩存,使用系統預設設定的緩存區大小,大于1代表緩存大小。
打開方式:如下表
打開方式
說明
‘r’
隻讀的方式打開檔案,若檔案不存在,則産生異常
‘r+’
以讀寫的方式方式打開檔案,不删除原内容,若檔案不存在,産生異常
‘w’
隻寫的方式打開檔案,删除原内容,無檔案則建立
‘w+’
讀寫的方式發開檔案,删除原内容,無檔案則建立
‘a’
以追加的方式打開一個檔案,不删除原内容,在檔案末尾追加資料,無檔案則建立
‘a+’
以讀寫的方式打開檔案,不删除原内容,在末尾寫資料,無檔案則建立
‘rb’
同’r’,打開二進制檔案
‘rb+’
同’r+’,打開二進制檔案
‘wb’
同’w’,打開二進制檔案
‘wb+’
同’w+’,打開二進制檔案
‘ab’
同’a’,打開二進制檔案
‘ab+’
同’a+’,打開二進制檔案
普通檔案的讀寫
讀取:
read([num])
若num不寫時,讀取整個檔案的内容,num>0時讀取num大小位元組的數
readline():讀取檔案的一行
readlines():讀取檔案的每一行
例如:
寫入:
write(str)
二進制檔案的讀取和寫入
寫去:
對于二進制檔案,是無法将數字,bool類型的資料寫入到二進制檔案中。
(1).使用struct子產品中的pack()方法将數字和bool型轉化為位元組串,然後使用write方法寫入到二進制檔案中。
方法:pack(‘格式傳’,格式對象)
(2).使用pickle子產品中的dump方法直接将對象轉化為位元組串并寫入到二進制檔案中。
方法:dump(格式obj,f)
二進制檔案的讀取就是寫入的逆過程
(1).讀取位元組串,使用函數将其還原成資料,使用struct子產品中的unpack()方法,傳回一個元組
方法:unpack(格式傳,位元組表)
(2).使用pickle子產品中load方法直接讀取并還原成原有資料,傳回還原後的對象
方法:load(f)
檔案對象的|常用方法
方法名
flush()
把緩存區的内容寫入檔案
close()
把緩存取得内容寫入檔案,并關閉檔案釋放對象
seek(offset[,whence])
檔案指針移動
tell()
傳回檔案指針目前位置
常用的檔案操作函數
對于檔案的操作,python提供了os子產品和os.path子產品的函數
(1).os子產品
函數名
access(path)
根據mode指定的權限通路檔案
chmod()
修改檔案的通路權限
remove(path)
删除path指定的檔案
rename(src,dst)
重命名
stat(path)
傳回指定檔案的屬性
fstat(path)
傳回打開檔案的所有屬性
listpath(path)
傳回path目錄下的檔案和目錄
(2).os.path子產品
abspath(path)
傳回path的絕對路徑
dirname(path)
傳回目錄的路徑
exists(path)
檔案是否存在
getsize(file_name)
傳回檔案的大小
isabs(path)
是否為絕對路徑
isdir(path)
是否為目錄
isfile(path)
是否為檔案
splitext(p)
從路徑中分割出擴充名
splitdrive(p)
從路徑中分割出驅動器的名稱
walk(path)
周遊目錄數
目錄的建立
(1).建立單個目錄
方法:mkdir(path)
(2).建立多級目錄
方法:makedirs(path1/path2/….)
目錄的删除
(1).删除一個目錄
方法:rmdir(path)
(2).删除多級目錄
方法:removedirs(path1/path2/….)
目錄的周遊
對于目錄的周遊,在上述檔案的操作方法中有一個listdir(path)方法,此方法隻能列出path目錄下的目錄和檔案,但是不能列出子目錄下的檔案和目錄。
(1).使用listdir函數進行遞歸
(2).使用os子產品的walk方法,傳回一個元組
python對于檔案的操作比較簡單,不像c那樣比較複雜,對于同一個操作有幾個不同的函數,例如對于檔案的打開,C語言中有open函數,fopen函數等。
本文轉自lnsaneLlinux部落格51CTO部落格,原文連結http://blog.51cto.com/lnsane784/2057037如需轉載請自行聯系原作者
Insane_linux