python學習筆記 檔案讀寫

2021-09-19 09:20:13 字數 4063 閱讀 9432

上篇:

就是把一些儲存存放起來,可以讓程式下一次執行的時候直接使用,而不必重新製作乙份,省時省力

python內建了乙個open()方法,用於對檔案進行讀寫操作。使用open()方法操作檔案就像把大象塞進冰箱一樣,可以分三步走,一是開啟檔案,二是操作檔案,三是關閉檔案。

open()方法的返回值是乙個file物件,可以將它賦值給乙個變數(檔案控制代碼)。其基本語法格式為:

f = open(filename, mode)

filename 檔名稱

mode 開啟模式

開啟模式常用的有 r(讀模式,檔案必須存在) w(寫模式),當然還有一些其他方式

f.close()
要讀取非utf-8編碼的檔案,需要給open()函式傳入encoding引數,例如,讀取gbk編碼的檔案:

>>> f = open('gbk.txt', 'r', encoding='gbk')

>>> f.read()

'gbk'

遇到有些編碼不規範的檔案,可能會丟擲unicodedecodeerror異常,這表示在檔案中可能夾雜了一些非法編碼的字元。遇到這種情況,可以提供errors引數,表示如果遇到編碼錯誤後如何處理。

f = open('gbk.txt', 'r', encoding='gbk', errors='ignore')
每當我們用open方法開啟乙個檔案時,將返回乙個檔案物件。這個物件內建了很多操作方法。下面假設,已經開啟了乙個f檔案物件。

讀取一定大小的資料, 然後作為字串或位元組物件返回。size是乙個可選的數字型別的引數,用於指定讀取的資料量。當size被忽略了或者為負值,那麼該檔案的所有內容都將被讀取並且返回。

f = open("1.txt", "r")

str = f.read()

print(str)

str = f.read()

print(str)

str = f.read(1)

print(str)

f.close()

從檔案中讀取一行n內容。換行符為'\n'。如果返回乙個空字串,說明已經已經讀取到最後一行。這種方法,通常是讀一行,處理一行,並且不能回頭,只能前進,讀過的行不能再讀了。

f = open("1.txt", "r")

str = f.readline()

print(str)

f.close()

將檔案中所有的行,一行一行全部讀入乙個列表內,按順序乙個乙個作為列表的元素,並返回這個列表。readlines方法會一次性將檔案全部讀入記憶體,所以也存在一定的風險。但是它有個好處,每行都儲存在列表裡,可以隨意訪問。

f = open("1.txt", "r")

a = f.readlines()

print(a)

f.close()

將字串或bytes型別的資料寫入檔案內。write()動作可以多次重複進行,其實都是在記憶體中的操作,並不會立刻寫回硬碟,直到執行close()方法後,才會將所有的寫入操作反映到硬碟上

# 開啟乙個檔案

f = open("foo.txt", "w")

f.write("人生苦短我用python!\n")

# 關閉開啟的檔案

f.close()

比如乙個檔案很大,比如5g,怎麼把檔案的資料讀取到記憶體然後進行處理呢?

while true:

content = filename.read(1024) 每次讀取1024個位元組

if len(content)==0: 如果讀取內容長度等於0,意味著檔案讀取完畢

break

f = open(filename)

第乙個引數 開始的偏移量,也就是代表需要移動偏移的位元組數

第二個引數 0 從檔案開始讀取 1 從當前位置去讀 2 從檔案末尾開始讀取

f.seek(2,0)

cont = f.readline() 列印出來的結果是從filename第二個位元組開始的

print(cont)

con = f.read()

print(con) 列印的剩下的所有內容

返回檔案讀寫指標當前所處的位置,它是從檔案開頭開始算起的位元組數。一定要注意了,是位元組數,不是字元數。

關閉檔案物件。當處理完乙個檔案後,呼叫f.close()來關閉檔案並釋放系統的資源。檔案關閉後,如果嘗試再次呼叫該檔案物件,則會丟擲異常。

with關鍵字用於python的上下文管理器機制。為了防止諸如open這一類檔案開啟方法在操作過程出現異常或錯誤,或者最後忘了執行close方法,檔案非正常關閉等可能導致檔案洩露、破壞的問題 。python提供了with這個上下文管理器機制,保證檔案會被正常關閉。在它的管理下,不需要再寫close語句。注意縮排。

with open('test.txt', 'w') as f:

f.write('hello, world!')

with支援同時開啟多個檔案:

with open('log1') as obj1, open('log2','w') as obj2:

s=obj1.read()

obj2.write(s)

修改檔名稱

import os

os.rename(filename,newfilename)

刪除檔案

os.remove(filename)

建立資料夾

os.mkdir(dirname)

獲取當前目錄

os.getcwd()

改變預設路徑

os.chdir("../")

刪除資料夾

os.rmdir(dirname)

列出當前目錄下的檔案

os.listdir()

案例:

製作檔案的備份

思路:

獲取要複製的檔名

開啟這個檔案

新建乙個檔案

讀取舊檔案

往新檔案寫

關閉兩個檔案

filename = input("請輸入要複製的檔名稱:")

f = open(filename,'r')

content = f.read()

position = filename.rfind(".")

newfile = filename[:position]+ '(復件)' + filename[position:]

r = open(newfile,'w')

r.write(content)

f.close()

r.close()

案例:

批量重新命名檔名稱

import os

# 獲取重新命名的資料夾 名稱

dir_name = input("請輸入要重新命名的資料夾:")

# 獲取資料夾中的所有檔名稱

filenames = os.listdir(dir_name)

# 切換目錄 如果不切換目錄要在下面連線

os.chdir(dir_name)

for name in filenames:

# os.rename(dir_name+'/'+name,dir_name+'/'+"[居然]"+name)

os.rename(name,"[居然]"+name)

Python學習筆記 檔案讀寫

參見網易雲課堂 瘋狂的python 第32課時 用python 來進行檔案處理,有何意義?自然首先想到的是可以查詢和更改檔案的屬性,分類和具體資訊。比如說分析log日誌,用正則查詢log裡所需要的內容。比如說寫個簡單的防毒軟體,或者做乙個檔案處理軟體等。所涉及的內容如下 1.檔案的開啟和建立 開啟需...

python學習筆記 讀寫檔案

能呼叫方法的一定是物件,檔案也是物件 file open c users qwer desktop python.txt r r是讀操作,不能調取寫方法 w是寫操作,不能調取讀方法,先清空再寫,沒有檔案先建立檔案 a是在內容末尾游標處追擊內容 print file.read print file.r...

Python學習筆記 檔案讀寫

關鍵字 open file,r,encoding 第乙個引數是檔案的路徑 第二個引數r 唯讀的意思 還有 a 在文字後面追加寫入 w 是寫文字 第三個引數是 指定檔案編碼 常用的有gbk utf 8編碼 後面呼叫write寫入字串到檔案中,open函式會使用指定encoding編碼為位元組串 後面呼...