上篇:
就是把一些儲存存放起來,可以讓程式下一次執行的時候直接使用,而不必重新製作乙份,省時省力
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編碼為位元組串 後面呼...