Python 檔案操作

Jinku Hu 2023年1月30日 2018年3月4日
  1. 開啟檔案
  2. 關閉檔案
  3. 檔案物件
  4. 寫入檔案
  5. 讀取檔案
  6. 重新命名和刪除檔案
Python 檔案操作

在本節中,我們將來學習 Python 中的檔案操作。

在 Python 中,你可以開啟、讀取或寫入檔案,然後最終關閉檔案。這些可以通過使用一些檔案操作函式來完成。要對檔案執行任何操作,你必須首先建立檔案物件。

開啟檔案

一個檔案可以使用 open() 函式來開啟,Python 自動隨之就建立一個檔案物件,用於稍後對該檔案執行操作。

開啟檔案的語法如下,

obj = open(fileName, mode)

fileName 是檔名,mode 定義了檔案開啟的模式,例如 r 是以只讀模式來開啟檔案。

fobj = open("PythonExamplefile.txt", 'r')

檔案開啟模式

模式 含義
r 讀取模式
rb 讀取模式下二進位制格式在
r+ 讀寫模式
rb+ 讀寫模式下二進位制格式
w 寫入模式。如果該檔案不存在,將建立一個新檔案。如果檔案存在,則會被覆蓋
wb 寫入模式下二進位制格式。如果該檔案不存在,將建立一個新檔案。如果檔案存在,則會被覆蓋
w+ 讀寫模式。如果該檔案不存在,將建立一個用於讀寫的新檔案。如果檔案存在,則會被覆蓋
wb+ 讀寫模式下二進位制格式。如果該檔案不存在,將建立一個用於讀寫的新檔案。如果檔案存在,則會被覆蓋
a 追加模式。新資料將寫在檔案末尾。如果該檔案不存在,將建立一個用於寫入的新檔案
ab 追加模式下二進位制格式。新資料將寫在檔案末尾。如果該檔案不存在,將建立一個用於讀寫的新檔案
a+ 追加和讀寫模式。新資料將寫在檔案末尾。如果該檔案不存在,將建立一個用於讀寫的新檔案
ab+ 追加和讀寫模式。新資料將寫在檔案末尾。如果該檔案不存在,將建立一個用於讀寫的新檔案

關閉檔案

檔案在執行操作後,必須要關閉,通過檔案物件的 close() 方法來關閉。

fobj.close()
fobj = open("PythonExamplefile.txt", 'r')
#operations on file
fobj.close()

檔案物件

開啟檔案時,會建立一個可用於執行操作的檔案物件。你可以通過它來獲取有關檔案的資訊,例如檔名、開啟模式等。

fobj = open("PythonExamplefile.txt", 'r')
print("File name", fobj.name)
print("File mode", fobj.mode)
fobj.close()
File name PythonExamplefile.txt
File mode r

寫入檔案

write() 方法用於向檔案中寫入內容,檔案必須在開啟後才能寫入。

使用 write() 方法的語法如下:

fobj.write("string")

舉個例子,

fobj=open("PythonExamplefile.txt", 'w')
fobj.write("Hello Python Programming")
fobj.close()

Hello Python Programming 會被寫入到檔案 PythonExamplefile.txt 中,假如原來檔案中有內容,就會被覆蓋掉。

讀取檔案

你可以使用 read() 方法來讀取檔案。下面是從檔案中讀取的語法:

fobj.read(numberofBytes)

這裡 numberofBytes 是從檔案中讀取的總位元組數。

fobj=open("PythonExamplefile.txt", 'r')
content = fobj.read(5)
print(content)
fobj.close()
Hello

重新命名和刪除檔案

重新命名檔案

rename() 方法用於重新命名檔案,其語法如下,

os.rename(currentName, newName)

這裡,os 是一個模組,它允許你執行依賴於作業系統的功能。

舉例如下,

import os
os.rename("PythonExamplefile.txt", "Python.txt")

Python.txt 該檔案的新名稱。

刪除檔案

檔案可以通過 remove() 方法來刪除,其語法如下,

os.remove(nameofFile)

舉例如下,

import os
os.remove("Python.txt")
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn