Day19 檔案的操作

2021-07-31 08:05:27 字數 2914 閱讀 4044

1 檔案操作的三個步驟

開啟檔案 open()

操作檔案 read()或者write()

關閉檔案 close()

open()函式預設的是模式, 預設的編碼是系統當前的編碼.

f = open("test")

data = f.read()

print(data)

traceback (most recent call last):

file "f:/python自主學習/pycharm/day19/檔案操作.py", line 8, in data = f.read()

unicodedecodeerror: 'gbk' codec can't decode byte 0x85 in position 14: illegal multibyte sequence

open()操作可能會引發異常, 諸如 ioerror

open()函式會返回的內容叫檔案控制代碼, 是乙個可迭代物件

f = open("test",encoding="utf8")

for line in f:

print(line.strip())

檔案開啟的時候可以設定buffering, 設定緩衝之後, open()就會使用記憶體來代替硬碟

當設定為0或者false, 表示不使用緩衝, 當設定為1或者true的時候, 表示使用緩衝

當值大於1的時候, 就設定快取區的大小(單位為位元組)

當值為-1或者為負數, 就設定為預設的快取區大小

三個基本模式r w a

r讀模式

這個模式只能讀, 開啟後游標位置在0處

w寫模式

這個模式只能寫, 不能讀, 開啟後的游標在0處

該模式開啟之後, 會直接將原始檔清空, 也正是因為這個原因游標才在0處

a追加模式

這個模式只能寫, 不能讀, 開啟後的游標檔案末尾

寫入的時候, 不會因為游標的位置在哪而寫入哪兒, 而是始終在檔案末追加

可讀可寫的+模式

r+模式

可讀可寫, 最老實的模式, 游標剛開啟的時候是在0位置

讀完之後游標會隨著讀的位置變化而變化

寫入的時候不會清空原有內容, 只會單純的在游標位置處寫入內容, (因而在游標0處寫入乙個字元只會改變游標0處的內容)

w+模式

可讀可寫, 保留w的特性, 上來就清空原始檔

a+模式

可讀可寫, 保留a的特性, 寫入不根據游標位置  

read()方法

讀取整個檔案

讀取單位是字元

可以傳入int引數, 用於獲取游標到目標位置字元的內容, 最開始開啟檔案的時候游標在檔案開始位置

f = open("test", encoding="utf-8")

data = f.read(5)

print(data)

f.close()

readline()

讀取一行

游標到下一行行首

readlines()

返回乙個可迭代物件, 每乙個元素是一行內容

用作遍歷的時候效果相同的還有檔案控制代碼, 但是最好使用檔案控制代碼, 這樣更省記憶體(檔案控制代碼是用一行拿一行)

f = open("test",encoding="utf8")

for line in f:

print(line)

readable()

檢視檔案是否可讀, 返回的是布林型別

write()

將需要寫入的內容寫入到檔案中

writelines()

與write()方法的區別就在於, 傳入的引數是乙個列表, 該方法不自動增加換行, 需要手動新增換行符號

writeable()

檢視檔案是否可讀

seek()

傳入乙個引數, 該值就是設定游標的位置, 從0開始, 是以位元組的方式排序得到的順序

傳入兩個引數, 第乙個引數功能一致, 第二個引數預設為0, 表示從頭開始, 為1時表示從當前游標挪動位置, 為2時表示從檔案末尾開始, 且(0, 2)組合用於各個模式, 但是(負數, 2)需要以b讀寫模式!

tell()

檢視當前游標的位置

其中換行佔2個位置

with語句自帶使用close()方法, 這也是為了防止開啟檔案忘記關閉

with open("test",encoding="utf8") as f_read, open("test2","w", encoding="utf8") as f_write:

for line in f_read:

f_write.write(line)

在檔案的操作過程中, 對檔案的操作不會立馬寫入磁碟儲存, 一般情況下是在呼叫close()的時候寫入磁碟儲存

如果需要立馬寫入磁碟儲存, 就可以使用flush()方法來實現

day8 檔案操作

檔案操作 檔案操作函式 正常模式 r唯讀f open aaaa mode r encoding utf 8 s f.read 一次讀取一行是readline print s f.close 迴圈 f open a mode r encoding utf 8 for line in f print l...

day1 檔案操作

f open yesterday2 r 檔案控制代碼 檔名是yesterday2,開啟方式為 read for i in range 5 選擇讀多少行 print f.readline strip strip 去掉空格和換行 readline為一行一行的讀 count 0 for line in f...

day13 檔案操作

2.1 開啟檔案 open file,mode r encoding none 開啟檔案並且返回乙個檔案物件 file 需要開啟的檔案的路徑 位址 a.絕對路徑 檔案或者資料夾在計算機中的全路徑 例如 users yuting 授課 python2101 01語言基礎 day13 常用模組和檔案操作...