Python 文件輸入/輸出——讀寫文件

在 Python 中, IO 模塊提供了三種 IO 操作的方法;原始二進制文件、緩衝二進制文件和文本文件。創建文件對象的規範方法是使用open()函數。

任何文件操作都可以通過以下三個步驟來執行:

  1. 使用內置的 open() 功能打開文件獲取文件對象。有不同的訪問模式,您可以在使用打開()功能打開文件時指定。
  2. 使用從open()函數檢索的文件對象執行讀、寫、追加操作。
  3. 關閉並釋放文件對象。

正在讀取文件

文件對象包括以下從文件中讀取數據的方法。

  • read(chars):從當前位置開始讀取指定數量的字符。
  • readline():讀取從當前讀取位置開始直到換行符的字符。
  • readlines():讀取所有行,直到文件結束,並返回一個 list 對象。

以下C:\myfile.txt文件將用於所有讀寫文件的例子。

C:\myfile.txt

This is the first line. 
This is the second line.
This is the third line. 

以下示例使用read(chars)方法執行讀取操作。

Example: Reading a File

>>> f = open('C:\myfile.txt') # opening a file
>>> lines = f.read() # reading a file
>>> lines
'This is the first line. \nThis is the second line.\nThis is the third line.'
>>> f.close() # closing file object 

上圖,f = open('C:\myfile.txt')從當前目錄打開默認讀取模式下的myfile.txt,返回一個文件對象。 f.read()函數讀取所有內容,直到 EOF 為字符串。如果在read(chars)方法中指定字符大小參數,那麼它將只讀取那麼多字符。 f.close()將沖水並關閉溪流。

閱讀一行

下面的示例演示如何從文件中讀取一行。

Example: Reading Lines

>>> f = open('C:\myfile.txt') # opening a file
>>> line1 = f.readline() # reading a line
>>> line1
'This is the first line. \n'
>>> line2 = f.readline() # reading a line
>>> line2
'This is the second line.\n'
>>> line3 = f.readline() # reading a line
>>> line3
'This is the third line.'
>>> line4 = f.readline() # reading a line
>>> line4
''
>>> f.close() # closing file object 

如您所見,我們必須在'r'模式下打開文件。readline()方法將返回第一行,然後指向文件中的第二行。

閱讀所有行

以下使用readlines()功能讀取所有行。

Example: Reading a File

>>> f = open('C:\myfile.txt') # opening a file
>>> lines = f.readlines() # reading all lines
>>> lines
'This is the first line. \nThis is the second line.\nThis is the third line.'
>>> f.close() # closing file object 

文件對象有一個內置的迭代器。以下程序逐行讀取給定的文件,直到StopIteration上升,即達到 EOF。

Example: File Iterator

f=open('C:\myfile.txt')
while True:
    try:
        line=next(f)
        print(line)
    except StopIteration:
        break
f.close() 

使用 for循環可以輕鬆讀取文件。

Example: Read File using the For Loop

f=open('C:\myfile.txt')
for line in f:
    print(line)
f.close() 

Output

This is the first line. 
This is the second line.
This is the third line. 

讀取二進制文件

使用open()功能中的“rb”模式讀取二進制文件,如下圖所示。

Example: Reading a File

>>> f = open('C:\myimg.png', 'rb') # opening a binary file
>>> content = f.read() # reading all lines
>>> content
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x08\x00\x00\x00\x08\x08\x06
\x00\x00\x00\xc4\x0f\xbe\x8b\x00\x00\x00\x19tEXtSoftware\x00Adobe ImageReadyq
\xc9e\x00\x00\x00\x8dIDATx\xdab\xfc\xff\xff?\x03\x0c0/zP\n\xa4b\x818\xeco\x9c
\xc2\r\x90\x18\x13\x03*8\t\xc4b\xbc\x01\xa8X\x07$\xc0\xc8\xb4\xf0>\\\x11P\xd7?
\xa0\x84\r\x90\xb9\t\x88?\x00q H\xc1C\x16\xc9\x94_\xcc\x025\xfd2\x88\xb1\x04
\x88\x85\x90\x14\xfc\x05\xe2( \x16\x00\xe2\xc3\x8c\xc8\x8e\x84:\xb4\x04H5\x03
\xf1\\ .bD\xf3E\x01\x90\xea\x07\xe2\xd9\xaeB`\x82'
>>> f.close() # closing file object 

寫入文件

文件對象提供了以下寫入文件的方法。

  • 寫入:將字符串寫入流,並返回寫入的字符數。
  • writelines(行):向流中寫入一個行列表。每行的末尾必須有一個分隔符。

創建新文件並寫入

如果新文件不存在或覆蓋到現有文件,則創建新文件。

Example: Create or Overwrite to Existing File

>>> f = open('C:\myfile.txt','w')
>>> f.write("Hello") # writing to file
5
>>> f.close()

# reading file
>>> f = open('C:\myfile.txt','r') 
>>> f.read()
'Hello'
>>> f.close() 

在上面的例子中,f=open("myfile.txt","w")語句以寫模式打開myfile.txtopen()方法返迴文件對象並將其分配給變量f'w'指定文件應該是可寫的。 接下來,f.write("Hello")覆蓋myfile.txt文件的現有內容。它返回寫入文件的字符數,在上面的例子中是 5。 最後,f.close()關閉文件對象。

追加到現有文件

下面通過在open()方法中傳遞'a''a+'模式,在現有文件的末尾追加內容。

Example: Append to Existing File

>>> f = open('C:\myfile.txt','a')
>>> f.write(" World!")
7
>>> f.close()

# reading file
>>> f = open('C:\myfile.txt','r') 
>>> f.read()
'Hello World!'
>>> f.close() 

寫多行

Python 提供了writelines()方法,將列表對象的內容保存在文件中。 由於換行符不會自動寫入文件,因此必須作為字符串的一部分提供。

Example: Write Lines to File

>>> lines=["Hello world.\n", "Welcome to TutorialsTeacher.\n"]
>>> f=open("D:\myfile.txt", "w")
>>> f.writelines(lines)
>>> f.close() 

以“w”模式或“a”模式打開文件只能寫入,不能讀取。同樣,“r”模式只允許讀,不允許寫。為了同時執行讀取/追加操作,請使用“a+”模式。

寫入二進制文件

open()功能默認以文本格式打開文件。要以二進制格式打開文件,請將'b'添加到模式參數中。 因此"rb"模式以二進制格式打開文件進行讀取,而"wb"模式以二進制格式打開文件進行寫入。與文本文件不同,二進制文件不可讀。使用任何文本編輯器打開時,數據都無法識別。

下面的代碼將數字列表存儲在二進制文件中。該列表在寫入前首先轉換為字節數組。內置函數 bytearray() 返回對象的字節表示。

Example: Write to a Binary File

f=open("binfile.bin","wb")
num=[5, 10, 15, 20, 25]
arr=bytearray(num)
f.write(arr)
f.close() 

原創文章,作者:I29TS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128858.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
I29TS的頭像I29TS
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29

發表回復

登錄後才能評論