檔案與檔案系統筆記

2021-10-08 21:34:24 字數 3321 閱讀 9482

開啟檔案

open(file, mode=『r』, buffering=none, encoding=none, errors=none, newline=none, closefd=true) open file and return a stream. raise oserror upon failure.

file: 必需,檔案路徑(相對或者絕對路徑)。

mode: 可選,檔案開啟模式

buffering: 設定緩衝

encoding: 一般使用utf8

errors: 報錯級別

newline: 區分換行符

常見的mode如下表所示:

開啟模式 執行操作

『r』 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

『w』 開啟乙個檔案只用於寫入。

如果該檔案已存在則開啟檔案,並從開頭開始編輯。

即原有內容會被刪除。

如果該檔案不存在,建立新檔案。

『x』 寫模式,新建乙個檔案,如果該檔案已存在則會報錯。

『a』 追加模式,開啟乙個檔案用於追加。

如果該檔案已存在,檔案指標將會放在檔案的結尾。

也就是說,新的內容將會被寫入到已有內容之後。

如果該檔案不存在,建立新檔案進行寫入。

『b』 以二進位制模式開啟檔案。一般用於非文字檔案,如:。

『t』 以文字模式開啟(預設)。一般用於文字檔案,如:txt。

『+』 可讀寫模式(可新增到其它模式中使用)

檔案物件方法:

fileobject.close() 用於關閉乙個已開啟的檔案。關閉後的檔案不能再進行讀寫操作, 否則會觸發valueerror錯誤。

fileobject.readline()讀取整行,包括 「\n」 字元。

fileobject.readlines()用於讀取所有行(直到結束符 eof)並返回列表,該列表可以由 python 的 for… in … 結構進行處理。

fileobject.tell()返回檔案的當前位置,即檔案指標當前位置。

fileobject.seek(offset[, whence])用於移動檔案讀取指標到指定位置。

offset:開始的偏移量,也就是代表需要移動偏移的位元組數,如果是負數表示從倒數第幾位開始。

whence:可選,預設值為 0。給 offset 定義乙個引數,表示要從哪個位置開始偏移;0 代表從檔案開頭開始算起,1 代表從當前位置開始算起,2 代表從檔案末尾算起。

在檔案關閉前或緩衝區重新整理前,字串內容儲存在緩衝區中,這時你在檔案中是看不到寫入的內容的。

如果檔案開啟模式帶b,那寫入檔案內容時,str(引數)要用encode方法轉為bytes形式,否則報錯:typeerror: a bytes-like object is required, not 『str』。

os 模組中關於檔案/目錄常用的函式

我們所知道常用的作業系統就有:windows,mac os,linu,unix等,這些作業系統底層對於檔案系統的訪問工作原理是不一樣的,因此你可能就要針對不同的系統來考慮使用哪些檔案系統模組……,這樣的做法是非常不友好且麻煩的,因為這樣就意味著當你的程式執行環境一改變,你就要相應的去修改大量的**來應對。

有了os(operation system)模組,我們不需要關心什麼作業系統下使用什麼模組,os模組會幫你選擇正確的模組並呼叫。

os.getcwd()用於返回當前工作目錄。

os.chdir(path)用於改變當前工作目錄到指定的路徑。

listdir (path=』.』)返回path指定的資料夾包含的檔案或資料夾的名字的列表

os.makedirs(path)用於遞迴建立多層目錄,如果該目錄已存在丟擲異常。

os.remove(path)用於刪除指定路徑的檔案。如果指定的路徑是乙個目錄,將丟擲 oserror。

os.rmdir(path)用於刪除單層目錄。僅當這資料夾是空的才可以, 否則, 丟擲 oserror。

os.removedirs(path)遞迴刪除目錄,從子目錄到父目錄逐層嘗試刪除,遇到目錄非空則丟擲異常。

os.rename(src, dst)方法用於命名檔案或目錄,從 src 到 dst,如果 dst 是乙個存在的目錄, 將丟擲 oserror。

os.system(command)執行系統的shell命令(將字串轉化成命令)

os.curdir指代當前目錄(.)

os.pardir指代上一級目錄(…)

os.sep輸出作業系統特定的路徑分隔符(win下為\,linux下為/)

os.linesep當前平台使用的行終止符(win下為\r\n,linux下為\n)

os.name指代當前使用的作業系統(包括:『mac』,『nt』)

os.path.basename(path)去掉目錄路徑,單獨返回檔名

os.path.dirname(path)去掉檔名,單獨返回目錄路徑

os.path.join(path1[, path2[, …]])將 path1,path2 各部分組合成乙個路徑名

os.path.split(path)分割檔名與路徑,返回(f_path,f_name)元組。如果完全使用目錄,它會將最後乙個目錄作為檔名分離,且不會判斷檔案或者目錄是否存在。

os.path.splitext(path)分離檔名與副檔名,返回(f_path,f_nam

os.path.getsize(file)返回指定檔案大小,單位是位元組。

os.path.getatime(file)返回指定檔案最近的訪問時間

os.path.getctime(file)返回指定檔案的建立時間

os.path.getmtime(file)返回指定檔案的最新的修改時間

浮點型秒數,可用time模組的gmtime()或localtime()函式換算

序列化與反序列化

python 的 pickle 模組實現了基本的資料序列和反序列化。

通過 pickle 模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存。

通過 pickle 模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。

pickle模組中最常用的函式為:

pickle.dump(obj, file, [,protocol]) 將obj物件序列化存入已經開啟的file中。

obj:想要序列化的obj物件。

file:檔名稱。

protocol:序列化使用的協議。如果該項省略,則預設為0。如果為負值或highest_protocol,則使用最高的協議版本。

pickle.load(file) 將file中的物件序列化讀出。

file:檔名稱。

檔案與檔案系統

1.檔案與檔案系統 open file,mode r buffering none,encoding none,errors none,newline none,closefd true open file and return a stream.raise oserror upon failure...

檔案與檔案系統

open file,mode r buffering none,encoding none,errors none,newline none,closefd true open file and return a stream.raise oserror upon failure.file 必需,檔...

檔案與檔案系統

1.檔案與檔案系統 open file,mode r buffering none,encoding none,errors none,newline none,closefd true open file and return a stream.raise oserror upon failure...