
- Python 基礎
- Python - 首頁
- Python - 概述
- Python - 歷史
- Python - 特性
- Python vs C++
- Python - Hello World 程式
- Python - 應用領域
- Python - 直譯器
- Python - 環境設定
- Python - 虛擬環境
- Python - 基本語法
- Python - 變數
- Python - 資料型別
- Python - 型別轉換
- Python - Unicode 系統
- Python - 字面量
- Python - 運算子
- Python - 算術運算子
- Python - 比較運算子
- Python - 賦值運算子
- Python - 邏輯運算子
- Python - 位運算子
- Python - 成員運算子
- Python - 身份運算子
- Python - 運算子優先順序
- Python - 註釋
- Python - 使用者輸入
- Python - 數字
- Python - 布林值
- Python 控制語句
- Python - 控制流
- Python - 決策
- Python - If 語句
- Python - If else
- Python - 巢狀 If
- Python - Match-Case 語句
- Python - 迴圈
- Python - for 迴圈
- Python - for-else 迴圈
- Python - While 迴圈
- Python - break 語句
- Python - continue 語句
- Python - pass 語句
- Python - 巢狀迴圈
- Python 函式和模組
- Python - 函式
- Python - 預設引數
- Python - 關鍵字引數
- Python - 僅限關鍵字引數
- Python - 位置引數
- Python - 僅限位置引數
- Python - 可變引數
- Python - 變數作用域
- Python - 函式註解
- Python - 模組
- Python - 內建函式
- Python 字串
- Python - 字串
- Python - 字串切片
- Python - 修改字串
- Python - 字串連線
- Python - 字串格式化
- Python - 跳脫字元
- Python - 字串方法
- Python - 字串練習
- Python 列表
- Python - 列表
- Python - 訪問列表元素
- Python - 修改列表元素
- Python - 新增列表元素
- Python - 刪除列表元素
- Python - 迴圈遍歷列表
- Python - 列表推導式
- Python - 排序列表
- Python - 複製列表
- Python - 合併列表
- Python - 列表方法
- Python - 列表練習
- Python 元組
- Python - 元組
- Python - 訪問元組元素
- Python - 更新元組
- Python - 解包元組
- Python - 迴圈遍歷元組
- Python - 合併元組
- Python - 元組方法
- Python - 元組練習
- Python 集合
- Python - 集合
- Python - 訪問集合元素
- Python - 新增集合元素
- Python - 刪除集合元素
- Python - 迴圈遍歷集合
- Python - 合併集合
- Python - 複製集合
- Python - 集合運算子
- Python - 集合方法
- Python - 集合練習
- Python 字典
- Python - 字典
- Python - 訪問字典元素
- Python - 修改字典元素
- Python - 新增字典元素
- Python - 刪除字典元素
- Python - 字典檢視物件
- Python - 迴圈遍歷字典
- Python - 複製字典
- Python - 巢狀字典
- Python - 字典方法
- Python - 字典練習
- Python 陣列
- Python - 陣列
- Python - 訪問陣列元素
- Python - 新增陣列元素
- Python - 刪除陣列元素
- Python - 迴圈遍歷陣列
- Python - 複製陣列
- Python - 反轉陣列
- Python - 排序陣列
- Python - 合併陣列
- Python - 陣列方法
- Python - 陣列練習
- Python 檔案處理
- Python - 檔案處理
- Python - 寫入檔案
- Python - 讀取檔案
- Python - 重新命名和刪除檔案
- Python - 目錄
- Python - 檔案方法
- Python - OS 檔案/目錄方法
- Python - OS 路徑方法
- 面向物件程式設計
- Python - OOPs 概念
- Python - 類和物件
- Python - 類屬性
- Python - 類方法
- Python - 靜態方法
- Python - 建構函式
- Python - 訪問修飾符
- Python - 繼承
- Python - 多型
- Python - 方法重寫
- Python - 方法過載
- Python - 動態繫結
- Python - 動態型別
- Python - 抽象
- Python - 封裝
- Python - 介面
- Python - 包
- Python - 內部類
- Python - 匿名類和物件
- Python - 單例類
- Python - 包裝器類
- Python - 列舉
- Python - 反射
- Python 錯誤和異常
- Python - 語法錯誤
- Python - 異常
- Python - try-except 塊
- Python - try-finally 塊
- Python - 丟擲異常
- Python - 異常鏈
- Python - 巢狀 try 塊
- Python - 使用者自定義異常
- Python - 日誌記錄
- Python - 斷言
- Python - 內建異常
- Python 多執行緒
- Python - 多執行緒
- Python - 執行緒生命週期
- Python - 建立執行緒
- Python - 啟動執行緒
- Python - 連線執行緒
- Python - 執行緒命名
- Python - 執行緒排程
- Python - 執行緒池
- Python - 主執行緒
- Python - 執行緒優先順序
- Python - 守護執行緒
- Python - 執行緒同步
- Python 同步
- Python - 執行緒間通訊
- Python - 執行緒死鎖
- Python - 中斷執行緒
- Python 網路程式設計
- Python - 網路程式設計
- Python - 套接字程式設計
- Python - URL 處理
- Python - 泛型
- Python 庫
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 雜項
- Python - 日期和時間
- Python - 數學
- Python - 迭代器
- Python - 生成器
- Python - 閉包
- Python - 裝飾器
- Python - 遞迴
- Python - 正則表示式
- Python - PIP
- Python - 資料庫訪問
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 輸出格式化
- Python - 效能測量
- Python - 資料壓縮
- Python - CGI 程式設計
- Python - XML 處理
- Python - GUI 程式設計
- Python - 命令列引數
- Python - 文件字串
- Python - JSON
- Python - 傳送郵件
- Python - 擴充套件
- Python - 工具/實用程式
- Python - GUI
- Python 高階概念
- Python - 抽象基類
- Python - 自定義異常
- Python - 高階函式
- Python - 物件內部
- Python - 記憶體管理
- Python - 元類
- Python - 使用元類進行超程式設計
- Python - 模擬和存根
- Python - 猴子補丁
- Python - 訊號處理
- Python - 型別提示
- Python - 自動化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 協程
- Python - 描述符
- Python - 診斷和修復記憶體洩漏
- Python - 不可變資料結構
- Python 有用資源
- Python - 問答
- Python - 線上測驗
- Python - 快速指南
- Python - 參考
- Python - 速查表
- Python - 專案
- Python - 有用資源
- Python - 討論
- Python 編譯器
- NumPy 編譯器
- Matplotlib 編譯器
- SciPy 編譯器
Python - Rarfile 模組
在 Python 中,**rarfile** 模組用於處理 rar 壓縮檔案(.rar 檔案)。透過使用 **rarfile** 模組,您可以獲取檔案、列出源內容,甚至直接讀取壓縮檔案中的檔案,而無需提取它們。此庫是應用程式 **unrar** 或 **rar** 的直接 Python 訪問,後者必須在命令級別安裝。
在本教程中,我們將學習 **rarfile** 模組的安裝方法、使用方法、模組提供的多種方法以及簡單的示例。
安裝 rarfile 模組
要使用 **rarfile** 模組,您必須安裝它以及 **unrar** 或 **rar** 工具,這些工具將在模組內部使用以處理 RAR 壓縮檔案。
要安裝 rarfile 模組,請使用以下命令:
pip install rarfile
安裝 WinRAR 實用程式
提取和處理 RAR 檔案需要 **WinRAR** 命令列工具。您可以從官方 WINRAR 網站下載它。下載適用於 Windows 的 **WinRAR** 並安裝。
將 **C:\Program Files\WinRAR\** 新增到系統的 **Path** 環境變數中,以啟用命令列訪問。之後,WinRAR 將可以與 Python 的 **rarfile** 模組一起使用。
rarfile 模組的方法
以下是 rarfile 模組的重要方法:
序號 | 方法及描述 |
---|---|
1 | rarfile.open(name, mode='r', password=None) 此方法用於讀取 RAR 壓縮檔案中的檔案,但將其寫入另一個檔案會將所有資料載入到 RAM 中。這意味著此方法將返回一個類似檔案的物件。 |
2 | rarfile.extract(member, path=None, password=None) 此方法將 RAR 壓縮檔案中的一個原始檔提取到指定的目錄。 |
3 | rarfile.extractall(path=None, password=None) 此方法提取所有檔案並將所有檔案儲存到引數中指定的目錄。 |
4 | rarfile.extractall(members=None, path=None, password=None) 此方法用於將 RAR 壓縮檔案中指定的多個檔案提取到指定的目錄。如果“members”為“None”,則解壓所有檔案。 |
5 | rarfile.infolist() 此方法返回壓縮檔案中所有檔案的“RarInfo”物件的列表,無論它們是否都描述檔案,因此,每個“RarInfo”物件都將包含對應於該檔案的詳細資訊。 |
6 | rarfile.getinfo(name) 此方法用於查詢有關壓縮檔案的資訊,並返回一個“RarInfo”物件。 |
7 | rarfile.namelist() 此方法實際上是一個解壓實用程式,它返回壓縮檔案中所有檔案的名稱列表。 |
8 | rarfile.test(zipfile=None) 此方法檢查檔案或檔案中選定檔案的“健壯性”,如果未發現錯誤,則返回“True”。 |
9 | rarfile.extractfile(name) 此方法為檔案中的給定檔案返回“類檔案”物件,允許讀取檔案內容,而無需實際從檔案中提取檔案。 |
10 | rarfile.close() 此方法用於儲存和釋放RAR檔案及其連線的任何資源。當使用“with”語句時,此方法通常會自動呼叫,但也可以在其他時間手動呼叫。 |
rarfile模組示例
安裝rarfile模組和winrar後,您就可以開始在Python中使用RAR檔案。以下是一些示例:
示例1:顯示RAR檔案的內容
在此示例中,我們將看到如何在不提取的情況下列出RAR檔案中包含的所有檔案。它列印檔案中每個檔案的名稱和大小:
from rarfile import RarFile # Path to the RAR file file_archive = 'data_archive.rar' # Open the RAR file archive_instance = RarFile(file_archive) try: # Process each file in the RAR archive for file_entry in archive_instance.infolist(): print(f"Name: {file_entry.filename}, Size: {file_entry.file_size} bytes") finally: # Ensure the file is closed properly archive_instance.close()
示例2:將RAR檔案中的所有檔案提取到目錄
此示例演示如何將RAR檔案中的所有檔案提取到指定的目錄。它確保在提取後正確關閉RAR檔案:
import rarfile # Specify the path to unrar.exe rarfile.UNRAR_TOOL = r"C:\Program Files\WinRAR\Unrar.exe" # Path to the RAR file rar_file_location = “text.rar" # Directory where files will be extracted output_directory = './extracted_files' # Access the RAR file rar_archive = rarfile.RarFile(rar_file_location) try: # Extract all contents to the specified directory rar_archive.extractall(path=output_directory) finally: # Close the RAR file to release system resources rar_archive.close()
示例3:從RAR檔案中提取單個檔案
在此示例中,我們將特定檔案從RAR檔案提取到給定目錄。程式碼在提取之前檢查檔案是否存在:
import rarfile # Location of the RAR file rar_file_path = 'data_archive.rar' # Name of the file to extract target_file = 'report.txt' # Open the RAR file rar_archive = rarfile.RarFile(rar_file_path) try: # Extract the specific file to the target directory rar_archive.extract(target_file, path='./extracted_files') finally: # Close the RAR file to release resources rar_archive.close()
示例4:直接從RAR檔案讀取檔案(無需提取)
此示例說明如何在不提取的情況下讀取RAR檔案內檔案的內容。檔案直接從檔案中開啟和讀取,並列印其內容:
import rarfile # Location of the RAR file compressed_file_path = 'data_archive.rar' # File to be read from within the RAR archive inner_file = 'notes.txt' # Open the RAR file rar_archive = rarfile.RarFile(compressed_file_path) try: # Access and read the contents of the specified file inside the archive extracted_file = rar_archive.open(inner_file) try: file_content = extracted_file.read() print(file_content.decode('utf-8')) # Assuming the file contains text finally: extracted_file.close() finally: # Close the RAR archive rar_archive.close()
示例5:驗證RAR檔案中是否存在檔案
此示例演示如何檢查特定檔案是否存在於RAR檔案中。如果找到該檔案,則會顯示一條訊息指示其存在:
import rarfile # Path to the RAR archive rar_file_location = 'data_archive.rar' # Name of the file to check within the archive target_file_name = 'report.txt' # Open the RAR archive rar_archive = rarfile.RarFile(rar_file_location) try: # Check if the file exists in the archive if target_file_name in rar_archive.namelist(): print(f"'{target_file_name}' is available in the archive.") else: print(f"'{target_file_name}' was not found in the archive.") finally: # Close the RAR archive rar_archive.close()
輸出
此示例演示如何將RAR檔案中的所有檔案提取到指定的資料夾中。(請參閱我們的示例2程式碼)
我們將Text.rar檔案檔案轉換為Folder資料夾:
