python提供了必要的函式和方法進行預設情況下的檔案基本操作。你可以用file物件做大部分的檔案操作。
檔案:硬碟中一塊儲存空間(虛擬的檔案)
檔案操作:根據檔名來操作硬碟的那塊儲存空間,操作方式 讀read 寫write
必需的三個步驟:
1.開啟檔案
2.操作檔案
3.關閉檔案
一、開啟檔案
必須先用python中的內建函式open()開啟乙個檔案,建立乙個file,相關的輔助方法才可以呼叫它進行讀寫。
file object = open(file_name,mode,encoding)
各個引數的細節如下:
file_name:檔案路徑加檔名,file_name變數是乙個包含了你要訪問的檔名稱的字串值。
mode:mode決定了開啟檔案的模式:唯讀,寫入,追加等,預設檔案訪問模式為唯讀(r)。
encoding:設定編碼方式。
二、操縱檔案
模式描述
r以只方式開啟檔案,檔案指標放在檔案開頭,這是預設值。
w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
b以二進位制開啟乙個檔案進行操作,與r,w,a合用,操作時不需要關心檔案編碼
+開啟乙個檔案用於讀寫。與r,w,a合用,對檔案的操作決定於合用的方法。
操作檔案的方法:
模式描述
file.close()
關閉檔案。關閉後檔案不能再進行讀寫操作。
file.flush()
重新整理檔案內部緩衝,直接把內部緩衝區的資料立刻寫入檔案, 而不是被動的等待輸出緩衝區寫入。
file.fileno()
返回乙個整型的檔案描述符(file descriptor fd 整型), 可以用在如os模組的read方法等一些底層操作上。
file.isatty()
如果檔案連線到乙個終端裝置返回 true,否則返回 false。
file.next()
返回檔案下一行。
file.read([size])
從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。
file.readline([size])
讀取整行,包括 "\n" 字元。
file.readlines([sizehint])
讀取所有行並返回列表,若給定sizeint>0,返回總和大約為sizeint位元組的行, 實際讀取值可能比sizeint較大, 因為需要填充緩衝區。
file.seek(offset[, whence])
設定檔案當前位置
file.tell()
返回檔案當前位置。
file.truncate([size])
擷取檔案,擷取的位元組通過size指定,預設為當前檔案位置。
file.write(str)
將字串寫入檔案,返回的是寫入的字元。
file.writelines(sequence)
向檔案寫入乙個序列字串列表,如果需要換行則要自己加入每行的換行符。
seek方法講解
必須在b模式下操作,seek中偏移的是位元組
方法:seek(偏移量, 偏移位置)
偏移量:移動的位元組數,負數是結合模式1,2往前偏移
偏移位置: --
0- 從檔案開始位置開始偏移 |
1- 從當前游標位置開始偏移 |
2- 從檔案末尾開始偏移
檔案內容為「b'你好1234567890'」
游標讀with
open
('source.txt'
,'rb'
)as f:
d1 = f.read(11)
print
(d1)
# print(d1.decode('utf-8'))
當前游標的位置
print
(f.tell())
游標操作 - 從末尾位置開始
f.seek(-3
,2) d2 = f.read(
)print
(d2.decode(
'utf-8'))
# 890
游標操作 - 從當前位置開始
f.seek(-3
,1) d2 = f.read(
)print
(d2.decode(
'utf-8'))
# 34567890
游標操作 - 從頭開始
f.seek(3,
0)d2 = f.read(
)print
(d2)
print
(d2.decode(
'utf-8'))
# 好1234567890
三、關閉檔案
file物件的close()方法重新整理緩衝區裡任何還沒寫入的資訊,並關閉該檔案,這之後便不能再進行寫入。
當乙個檔案物件的引用被重新指定給另乙個檔案時,python會關閉之前的檔案。用close()方法關閉檔案是乙個很好的習慣。fileobject.close();
四、with方法
將檔案的關閉交給with管理,當with中邏輯結束後,系統會自動釋放檔案
with
open
('file_name'
,'model'
, encoding=
'utf-8'
)as f
pass
五、檔案的複製就是先讀再寫文字型別檔案的複製
r =open
('source.txt'
,'r'
, encoding=
'utf-8'
)w =
open
('target.txt'
,'w'
, encoding=
'utf-8'
)for line in r:
# 遍歷就是一行一行讀 取讀檔案的流
w.write(line)
w.flush(
)# 將寫入到記憶體中的資料重新整理到硬碟中
w.close(
)r.close(
)用with
open語法如何處理?
r+: 不會建立檔案的可讀可寫 | w+:建立清空檔案的可讀可寫 | a+:建立不清空檔案(追加)的可讀可寫
with
open
('source.txt'
,'r'
, encoding=
'utf-8'
)as f1:
with
open
('target.txt'
,'a+'
, encoding=
'utf-8'
)as f2:
for line in f1:
f2.write(line)
如果複製非文字型別的資料檔案?
從模式採用b模式,不需要關心編碼問題
with
open
('source.mp4'
,'rb'
)as f1:
with
open
('target.mp4'
,'wb+'
)as f2:
# rb+ | wb | wb+ | ab | ab+
for line in f1:
f2.write(line)
python中檔案的操作
開啟 操作 關閉 基本引數 r readonly 預設引數 只能讀 不能寫 讀取檔案不存在 會報錯 w 寫檔案 write only 檔案存在時,會清空檔案的內容並寫入新的檔案內容 檔案不存在,會建立新的檔案並寫入內容 a 寫檔案 write only 寫 不會清空檔案內容 會在檔案末尾追加 寫 檔...
python中檔案的操作
f open home ceshi mmm.txt w w 為讀寫 f.write zuoshouzhiyue n 寫入資料 記得加 n f.tell 當前在檔案中的位置 14 f.write sadingding n f.tell 25 f.seek 12,1 移動當前位置 12代表移動量 1代表...
python中檔案的操作
一 檔案概述 1.計算機檔案是乙個儲存在儲存器上的資料序列,可以包含任何資料內容 2.檔案包括文字檔案和二進位制檔案。3.資訊量 1024byte 1kb 1024kb 1mb 1024mb 1gb 1024gb 1t 4.字元編碼 4.1ascii編碼 4.2gb2312編碼 4.3gbk編碼 4...