1. 程式人生 > 其它 >《Python零基礎快樂學習之旅》學習筆記14——文件的讀取與寫入

《Python零基礎快樂學習之旅》學習筆記14——文件的讀取與寫入

技術標籤:學習筆記Pythonpython檔案讀取與寫入

第14章 文件的讀取與寫入

14.1 讀取文件

Python處理讀取或寫入文件時,首先需要將文件開啟,然後可以接受一次讀取所有文件內容或是逐行讀取。

14.1.1 open()

open() 函式可以開啟一個文件供讀取或寫入。如果函式執行成功,將返回檔案物件。open()函式的基本使用格式如下:

file_Obj = open(file, mode="r")		# 這裡只列出最常用的兩個引數
  • file:用字串列出要開啟的文件。

  • mode:開啟文件的模式,如果省略則代表mode=“r”。使用時如果mode="w"或其它,也可以省略”mode=“,直接寫”w“。也可以同時具有多項模式,例如”wb“代表以二進位制文件開啟供寫入,可以是下列基本模式。

    下列是第一個字母的操作意義。

    • r“:以只讀方式開啟文件供讀取。
    • w“:開啟文件供寫入。如果檔案已存在則開啟檔案,並覆蓋原先的內容。如果檔案不存在,則建立新檔案。
    • a”:開啟文件供寫入,如果原先文件有內容,則將新寫入資料附加在原先的內容之後。
    • x“:開啟一個新的文件供寫入,如果該檔案已存在則會報錯。

    以下是第二個字母的意義,代表文件型別。

    • b“:二進位制模式。
    • t“:文字模式(預設)。
  • file_Obj:文件物件。print()函式可以將輸出導向此物件,不使用時可使用”file_Obj.close()“關閉。使用print()時,預設是將資料輸出至螢幕,如果要將資料輸出至文件,需要在print()方法中新增引數”file=xxx“,”xxx“是指使用open()方法所返回的文件物件。

程式例項:

# 建立文件物件
fobj = open("out14_1.txt", "w")
print("Hello world", file=fobj)     # 將字串資料輸出至文件
# 關閉文件物件
fobj.close()

執行結果:
在這裡插入圖片描述

14.1.2 read()

文件開啟後,可以使用read() 讀取所開啟的文件。使用read()讀取時,所有的文件內容將以一個字串方式被讀取,然後存入字串變數中。列印這個字串變數就相當於列印整個文件內容。

程式例項:

fileName = "out14_1.txt"
# 設定要開啟的文件路徑 file_Obj = open(fileName) # 使用預設mode=r開啟文件,返回呼叫物件file_obj data = file_Obj.read() # 讀取文件內容到變數data file_Obj.close() # 關閉文件物件,如果沒有關閉可能會損壞文件內容 print(data)

執行結果:

Hello world

14.1.3 with

Python提供一個關鍵詞with,可以在開啟文件與建立文件物件時使用,語法如下:

with open(要開啟的文件) as 文件物件:
	相關係列指令

使用這種方式開啟文件,最大的特點是可以不必在程式中關閉文件,with指令會在結束不需要此文件時自動將它關閉。文件經"with open() as 文件物件"開啟後會產生一個文件物件,此時使用read()即可讀取此文件物件的內容。

程式例項:

fileName = "out14_1.txt"        # 設定要開啟的文件路徑
with open(fileName) as file_Obj:
    data = file_Obj.read()      # 讀取文件內容到變數data
    print(data)

執行結果:

Hello world

14.1.4 逐行讀取文件內容

若想逐行讀取文件內容,可使用下列迴圈:

for line in file_Obj:		# file_Obj為文件物件
	程式程式碼段

程式例項:

fn = 'E:\Python-Files\ch14\out14_2.txt'       # 設定要開啟的文件
with open(fn) as file_Obj:
    for line in file_Obj:   # 逐行讀取文件內容到變數line
        print(line.rstrip())    # 刪除末尾的換行符

執行結果:

I'm fine.
Thank you!
And you?

14.1.5 readlines()

使用with關鍵詞配合open()時,所開啟的文件物件只能在with段內使用。使用readlines() 可以逐行讀取,同時以列表方式儲存,讀取時每行的換行字元都會儲存在列表內。此外還可以在with段外遍歷原先文件物件的內容。

程式例項:

fn = 'E:\Python-Files\ch14\out14_2.txt'       # 設定要開啟的文件
with open(fn) as file_Obj:
    obj_list = file_Obj.readlines()     # 每次讀一行

print(obj_list)         # 列印列表

# 逐行輸出列表內容
for line in obj_list:
    print(line.rstrip())

執行結果:

["I'm fine.\n", 'Thank you!\n', 'And you?']
I'm fine.
Thank you!
And you?

14.2 寫入文件

14.2.1 將執行結果寫入空文件內

若要寫入文件,則要設定寫入模式mode=‘w’,“mode”可省略,直接在open()函式內輸入‘w’。如果開啟文件可以讀取或寫入,則使用‘r+’。如果文件不存在,open()會建立該文件物件,如果文件已存在,則覆蓋原先的內容。

輸入到文件可以使用write()方法,語法格式如下:

len = file_Obj.write(data)	# file_Obj為文件物件,data為要輸出的資料

程式例項:

fileName = 'E:\Python-Files\ch14\out14_3.txt'
str = 'agqtqr132535olksdfkd'

with open(fileName, 'w') as file_Obj:
    file_Obj.write(str)

執行結果:
在這裡插入圖片描述

14.2.2 輸出多行資料

如果要將多行資料輸出到文件,設計程式時需要注意各行之間的換行符號問題,write()不會主動在行的末端加上換行符號。

程式例項:

fileName = 'E:\Python-Files\ch14\out14_3.txt'
str1 = 'Never say never'
str2 = 'Your will, my hands'

with open(fileName, 'w') as file_Obj:
    file_Obj.write(str1)
    file_Obj.write(str2)

執行結果:
在這裡插入圖片描述

輸出至文件時,可新增空格或換行符號,以便獲得預期的輸出結果。

fileName = 'E:\Python-Files\ch14\out14_3.txt'
str1 = 'Never say never'
str2 = 'Your will, my hands'

with open(fileName, 'w') as file_Obj:
    file_Obj.write(str1 + '\n')     # 新增換行符號
    file_Obj.write(str2 + '\n')

執行結果:
在這裡插入圖片描述

14.2.3 建立附加文件

建立附加文件主要是可以將文件內容輸出到所開啟的文件末端,當以open()開啟時,需增加引數mode=‘a’或直接用’a’。若該文件不存在,則新建文件供寫入,若該文件存在,則將新內容追加到原先文件內容之後。

程式例項:

fileName = 'E:\Python-Files\ch14\out14_3.txt'
str1 = 'Being on sea, sail; being on land, settle.'
str2 = 'Birds of a feather flock together.'

with open(fileName, 'a') as file_Obj:
    file_Obj.write(str1 + '\n')     # 新增換行符號
    file_Obj.write(str2 + '\n')

執行結果:
在這裡插入圖片描述


往期文章: