讀取和寫入文件等操作是 Python 可以完成的最常見任務(wù)之一。無論是寫入簡(jiǎn)單的文本文件,還是讀取復(fù)雜的服務(wù)器日志,甚至分析原始字節(jié)數(shù)據(jù),進(jìn)行相關(guān)的處理操作,最終所有這些情況都需要讀取或?qū)懭胛募?/span> 整套學(xué)習(xí)自學(xué)教程中應(yīng)用的數(shù)據(jù)都是《三國志》、《真·三國無雙》系列游戲中的內(nèi)容。 ![]() 文件的基本概念文件是一組用于存儲(chǔ)數(shù)據(jù)的連續(xù)字節(jié)。這些數(shù)據(jù)以特定格式組織,可以是文本文件等簡(jiǎn)單的文件,也可以是可執(zhí)行程序等復(fù)雜的文件。這些字節(jié)文件然后被翻譯成二進(jìn)制文件1,0 便于計(jì)算機(jī)進(jìn)行處理。 ![]() 文件包含三個(gè)部分:
![]() 數(shù)據(jù)表示的內(nèi)容取決于所使用的格式規(guī)范通常由擴(kuò)展名表示。例如擴(kuò)展名為.jpg最有可能符合圖形交換格式規(guī)范的文件但未必是圖片文件。 擴(kuò)展名有數(shù)百甚至數(shù)千個(gè)文件擴(kuò)展名。這里介紹 .txt 和 .csv 擴(kuò)展名。 文件路徑訪問文件需要文件路徑,文件路徑由字符串組成。其中包括三個(gè)部分:
![]() ![]() 行尾行為可以追溯到摩爾斯電碼時(shí)代,當(dāng)時(shí)使用特定的符號(hào)來傳達(dá)傳輸?shù)慕Y(jié)束或行的結(jié)束。 Windows 使用 CR+LF 字符來表示新行,而 Unix 和較新的 Mac 版本僅使用LF字符。這些符號(hào)都是不可見的,但是可以操作。 # windowsHello World\r\nDynasty Warriors\r\n 字符編碼未來還會(huì)面臨的一個(gè)字符數(shù)據(jù)編碼的問題。兩種最常見的編碼是ASCII和UNICODE格式。
在 Python 中打開和關(guān)閉文件調(diào)用 open() 內(nèi)置函數(shù)來完成,其中包含一個(gè)文件路徑的文件關(guān)鍵參數(shù)。
調(diào)用 .close() 對(duì)打開的文件進(jìn)行關(guān)閉。 file.close() 可以調(diào)用 with語句 在執(zhí)行打開操作模塊后自動(dòng)進(jìn)行關(guān)閉。
讀寫參數(shù)說明。 ![]() 讀寫參數(shù)組合。 ![]() 文本文件類型文本文件是您會(huì)遇到的最常見的文件。 # 打開方式舉例open('data.txt')open('data.txt', 'r')open('data.txt', 'w')type(file)<class '_io.TextIOWrapper'> 緩沖的二進(jìn)制文件類型
原始文件類型file = open('abc.txt', 'rb', buffering=0)type(file)<class '_io.FileIO'> 讀寫打開的文件讀取文件時(shí)可以調(diào)用的方法。
.read(size=-1),size字節(jié)數(shù)從文件中讀取。如果沒有傳遞或傳遞參數(shù)None,-1則讀取整個(gè)文件。 with open('data.txt', 'r') as f: print(f.read())data data datadata data datadata data data .readline(size=-1),從該行中讀取多個(gè)字符。這一直持續(xù)到行尾,然后回繞。如果沒有傳遞或傳遞參數(shù)None,-1則讀取整行(或該行的其余部分)。
.readlines(),這將從文件對(duì)象中讀取剩余的行并將它們作為列表返回。 with open('data.txt', 'r') as f: print(f.readlines())data data datadata data datadata data data 遍歷文件中的每一行.readline() 方法每次遍歷一行。
.readlines() 方法返回一個(gè)列表,其中列表中的每個(gè)元素代表文件中的一行。 with open('data.txt', 'r') as f: for line in f.readlines(): print(line, end='')data data datadata data datadata data data# 或者簡(jiǎn)化操作with open('data.txt', 'r') as f: for line in f: print(line, end='')data data datadata data datadata data data 文件的讀寫是相對(duì)的,方法和讀取一樣。
字節(jié)操作使用字節(jié)字符串處理文件。這是通過將 'b' 字符添加到參數(shù)來完成的。 with open('data.jpg', 'rb') as f: print(f.readline())b'\x89'b'JPG'b'\r\n'b'\x1a'b'\n' |
|