
- Python 資料持久化教程
- Python 資料持久化 - 首頁
- Python 資料持久化 - 簡介
- Python 資料持久化 - 檔案 API
- 使用 os 模組進行檔案處理
- Python 資料持久化 - 物件序列化
- Python 資料持久化 - Pickle 模組
- Python 資料持久化 - Marshal 模組
- Python 資料持久化 - Shelve 模組
- Python 資料持久化 - dbm 包
- Python 資料持久化 - CSV 模組
- Python 資料持久化 - JSON 模組
- Python 資料持久化 - XML 解析器
- Python 資料持久化 - Plistlib 模組
- Python 資料持久化 - Sqlite3 模組
- Python 資料持久化 - SQLAlchemy
- Python 資料持久化 - PyMongo 模組
- Python 資料持久化 - Cassandra 驅動程式
- 資料持久化 - ZODB
- 資料持久化 - Openpyxl 模組
- Python 資料持久化資源
- Python 資料持久化 - 快速指南
- Python 資料持久化 - 有用資源
- Python 資料持久化 - 討論
使用 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_WRONLY和O_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。返回實際寫入的位元組數。 |