使用 os 模組進行檔案處理



除了由open()函式返回的檔案物件之外,檔案 IO 操作也可以使用 Python 的內建庫 os 模組來執行,該模組提供了有用的作業系統相關的函式。這些函式對檔案執行低級別的讀/寫操作。

os 模組中的open()函式類似於內建的 open()。但是,它不返回檔案物件,而是返回檔案描述符,一個對應於已開啟檔案的唯一整數。檔案描述符的值 0、1 和 2 分別表示 stdin、stdout 和 stderr 流。其他檔案將從 2 開始獲得增量檔案描述符。

open()內建函式一樣,os.open()函式也需要指定檔案訪問模式。下表列出了 os 模組中定義的各種模式。

序號 Os 模組及描述
1

os.O_RDONLY

只讀開啟

2

os.O_WRONLY

只寫開啟

3

os.O_RDWR

讀寫開啟

4

os.O_NONBLOCK

開啟時不阻塞

5

os.O_APPEND

每次寫入時追加

6

os.O_CREAT

如果檔案不存在則建立檔案

7

os.O_TRUNC

將大小截斷為 0

8

os.O_EXCL

如果建立並且檔案存在則報錯

要開啟一個新檔案並在其中寫入資料,請使用管道 (|) 運算子指定O_WRONLYO_CREAT模式。os.open()函式返回一個檔案描述符。

f=os.open("test.dat", os.O_WRONLY|os.O_CREAT)

請注意,資料以位元組字串的形式寫入磁碟檔案。因此,像之前一樣,使用 encode() 函式將普通字串轉換為位元組字串。

data="Hello World".encode('utf-8')

os 模組中的 write() 函式接受此位元組字串和檔案描述符。

os.write(f,data)

不要忘記使用 close() 函式關閉檔案。

os.close(f)

要使用 os.read() 函式讀取檔案內容,請使用以下語句

f=os.open("test.dat", os.O_RDONLY)
data=os.read(f,20)
print (data.decode('utf-8'))

請注意,os.read() 函式需要檔案描述符和要讀取的位元組數(位元組字串的長度)。

如果要同時進行讀/寫操作開啟檔案,請使用 O_RDWR 模式。下表顯示了 os 模組中與檔案操作相關的重要的函式。

序號 函式及描述
1

os.close(fd)

關閉檔案描述符。

2

os.open(file, flags[, mode])

開啟檔案並根據 flags 設定各種標誌,並可能根據 mode 設定其模式。

3

os.read(fd, n)

從檔案描述符 fd 中讀取最多 n 個位元組。返回包含讀取的位元組的字串。如果已到達 fd 所引用的檔案的末尾,則返回空字串。

4

os.write(fd, str)

將字串 str 寫入檔案描述符 fd。返回實際寫入的位元組數。

廣告