iT邦幫忙

2024 iThome 鐵人賽

DAY 28
1
自我挑戰組

每日挑戰:從零開始的 Python 學習之旅系列 第 28

【Day 28】進階檔案處理篇 - 續集

  • 分享至 

  • xImage
  •  

Hi 大家好,

今天要開始介紹Python中的進階檔案處理篇之續集,那我們開始吧!

認識 io 模組

  • 模組的檔案物件可以用來操作檔案和資料流(stream)
  • 檔案物件的類型可以分為三個主要類型:
    • 文字 I/O (text I/O)
    • 二進位 I/O (binary I/O)
    • 原始 I/O (raw I/O)
  • 以上三個主要類型,分別皆繼承於基礎類別:
    • TextIOWrapper
    • BufferedReader 和 BufferedWriter
    • FileIO

舉例說明:

  1. 使用io模組操作檔案
  • 開啟檔案讀取資料
  • 使用io.open()與內建的open()函數功能是類似的,都可以讀取檔案內容
# example.txt
Hello, World
import io

with io.open('example.txt', 'r', encoding='utf-8') as file:
    data = file.read()
    print(data)
PS D:\Project\practice> python hi.py
Hello, World
PS D:\Project\practice> 
  1. 使用FileIO物件寫入檔案
  • 使用FileIO開啟檔案
  • 繼承RawIOBase並且提供一個介面用來存取檔案系統內的檔案
  • 資料是以bytes型態寫入檔案內
# example.txt
Hello, World
import io

file = io.FileIO('example.txt', 'w')

# 寫入資料到檔案
file.write(b'This is my first practice!!')

# 關閉檔案
file.close()
# example.txt
This is my first practice!!

以下兩個比較特殊的類別,分別用於在記憶體中操作二進位資料和字串資料,而不是直接操作檔案

  1. 使用BytesIO操作二進位資料
import io

# 先建立一個 BytesIO 物件
binary_stream = io.BytesIO()

# 寫入二進位資料
binary_stream.write(b'This is binary data')

# 用於設定檔案流中的當前文件位置
binary_stream.seek(0)

# 讀取資料
print(binary_stream.read())
PS D:\Project\practice> python hi.py
b'This is binary data'
PS D:\Project\practice>
  1. 使用StringIO操作字串資料
import io

# 建立一個 StringIO 物件
string_stream = io.StringIO()

# 寫入字串資料
string_stream.write('This is string data')

# 用於設定檔案流中的當前文件位置
string_stream.seek(0)

# 讀取資料
print(string_stream.read())
PS D:\Project\practice> python hi.py
This is string data
PS D:\Project\practice>

那今天就介紹到這裡,我們明天見~


上一篇
【Day 27】進階檔案處理篇
下一篇
【Day 29】使用requests模組抓取網路資料
系列文
每日挑戰:從零開始的 Python 學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言