[Python]學習基礎篇:文件和目錄
文件是數據在外部介質上的數據的集合,對於文件在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函數等。
[Python]學習基礎篇:文件和目錄