Python 中的 rarfile模塊

在下面的教程中,我們將討論 Python 編程語言的 rarfile模塊。我們將理解 rarfile模塊的不同類以及一些例子。

那麼,讓我們開始吧。

Python 中的 rarfile模塊用於讀取 RAR 檔案。該界面儘可能像 zipfile 一樣構建。

rarfile模塊的基本功能:

  1. 這個模塊用 Python 編程語言解析檔案結構。
  2. 它使用 Python 提取非壓縮文件。
  3. 它還會提取使用 unrar 壓縮的文件。
  4. 可選地,我們也可以將壓縮數據寫入臨時文件,以加快解密速度;否則,它需要在每次執行時掃描整個歸檔。

現在,在我們開始使用該模塊之前,讓我們安裝它。

為了安裝 rarfile 模塊,我們將使用 pip 安裝程序執行如下所示的命令:

語法:


$ pip3 install rarfile

為了驗證模塊安裝是否正確,我們可以創建一個新文件,並添加 import 語句,看看它是否返回任何錯誤。

文件:驗證. py


import rarfile

現在,保存 Python 文件,並使用命令提示符運行執行命令:

語法:


$ python verify.py

如果上面的 Python 文件沒有引起任何導入錯誤,我們就可以進入臉書信使機器人構建程序了。但是,如果它確實引發了異常,建議重新安裝該模塊並參考其官方文檔。

現在,讓我們了解一下 rarfile 模塊的基礎知識。

rarfile 模塊提供了多個類,我們可以根據需要使用。這些類別是:

  1. RarFile 類
  2. RarInfo 級
  3. 罕見的 ExtFile 類
  4. nsdatetime 類

我們將簡要討論這些課程。

rarfile 模塊的 RarFile 類用於解析 RAR 結構,提供對檔案中文件的訪問。

執行 RarFile 類的語法如下所示:

語法:


class rarfile.RarFile(file, mode='r', charset=None, info_callback=None, crc_check=True, errors='stop', part_only=False)

RarFile 類的一些方法和屬性如下所示:

1.=無

此屬性用於陳述存檔注釋。該值可以是 Unicode 字元串或無。

2.文件名 =無

此屬性用於提供文件名(如果有)。該值可以是 Unicode 字元串或無。

3._ 輸入 _()

此方法用於打開上下文。

4. 退出 ( 類型追溯)

此方法用於退出上下文。

5.iter()

此方法用於迭代成員。

6. 設置密碼 ( pwd

此方法用於設置提取過程中使用的密碼。

7.需要 _ 密碼()

如果任何歸檔條目需要密碼來提取,此方法返回 True。

8.名稱列表()

此方法返回一個包含存檔文件名稱的列表。

9.信息列表()

該方法返回歸檔文件中所有文件/目錄的 RarInfo 對象。

10.volumelist()

此方法返回歸檔卷的文件名。

如果歸檔文件只有一個卷,則列表由主歸檔文件的名稱組成。

11. getinfo( 名稱)

此方法為文件返回 RarInfo。

12.打開(名稱模式= ‘r’pwd =無)

此方法返回可從中讀取數據的類似文件的對象(稀疏文件)。

該對象實現 io。RawIOBase 介面,所以我們可以用 io 進一步包裝它。BufferReader 和 io.TextIOWrapper。

在 Python 的早期版本中,io 模塊不可用,它只實現了 read()、seek()、tell()和 close()方法。

該對象是可搜索的,儘管只對未壓縮的文件進行快速搜索。在壓縮文件中,通過提前讀取和重新開始解壓縮來實現查找。

參數:

  • 名稱-這個參數是一個文件的名稱或者一個 RarInfo 的實例。
  • 模式-該參數是打開文件的模式。它必須是「r」。
  • pwd -該參數包括用於提取的密碼。

13.read( 名稱pwd = None )

此方法返回歸檔條目的未壓縮數據。

對於較大的文件,建議使用 open()方法。

參數:

  • 名稱-這個參數是一個文件的名稱或者一個 RarInfo 的實例。
  • pwd -該參數包括用於提取的密碼。

14.關閉()

此方法用於釋放開放資源。

15.printdir( 文件=無)

此方法用於將歸檔文件中的文件列表列印到 stdout 或給定的文件。

16.摘錄(成員路徑=無pwd =無)

此方法用於將單個文件提取到當前目錄中。

參數:

  • 成員-此參數是文件的名稱或 RarInfo 的實例。
  • 路徑-這是一個可選參數,包括目標路徑。
  • 這是另一個可選參數,包括要使用的密碼。

17.抽取(路徑=無成員=無pwd =無)

此方法用於將所有文件提取到當前目錄中。

參數:

  1. 路徑-這是一個可選參數,包括目標路徑。
  2. 成員-這是另一個可選參數,包括文件的名稱或 RarInfo 的實例。
  • 這是另一個可選參數,包括要使用的密碼。

18.測試( pwd = None

該方法用於讀取所有文件和測試循環冗餘校驗。

19 . strerror()

如果解析失敗,此方法返回錯誤字元串;如果沒有發生異常,則返回無。

rarfile 模塊的 RarInfo 類被用作 RAR 檔案中的一個條目。

作為日期時間的時間戳在 RAR3 中沒有時區,而在 RAR5 歸檔中有 UTC 時區

執行類的語法如下所示:

語法:


class rarfile.RarInfo

類的一些方法和屬性如下所示:

1.文件名

該屬性包含帶有相對路徑的文件名。此屬性的值始終是一個 Unicode 字元串,指定路徑,用路徑分隔符「/」分隔。

2.日期時間

該屬性由文件修改的時間戳組成。它可以用作(年、月、日、小時、分鐘、秒)的元組。RAR5 允許在丟失的地方存檔,那麼它就是無。

3.評論

該屬性包括可選的文件注釋欄位。該值由 Unicode 字元串組成。(僅限 RAR3)

4.文件大小

此屬性用於指定未壓縮的大小。

5.壓縮大小

此屬性用於指定壓縮大小。

6.壓縮類型

此屬性用於指定壓縮方法:RAR_M0、…、RAR_M5 常量之一。

7.提取版本

該屬性包含解壓縮所需的 RAR 的最小版本。As(大調*10 +小調),所以 2.9 就是 29。

RAR3: 10,20,29

RAR5 在檔案中沒有這樣的欄位,它被設置為 50。

8. host_os

此屬性指定主機操作系統類型,這是 RAR 操作系統常量之一。

RAR3: RAR_OS_WIN32,RAR_OS_UNIX,RAR_OS_MSDOS,RAR_OS_OS2,RAR_OS_BEOS

RAR5: RAR_OS_WIN32,RAR_OS_UNIX

9.方式

該屬性用於指定文件屬性。它可能是 dos 風格的,也可能是 unix 風格的,這取決於 host_os。

10. mtime

該屬性用於指定文件修改的時間。該值可以與 date_time 屬性相同;但是,作為具有擴展精度的 datetime 對象。

11.阿蒂米

該屬性是指定創建時間的可選時間欄位。它還充當日期時間對象。

12.訪問時間

該屬性也是一個可選的時間欄位,用於指定上次訪問的時間。它還充當日期時間對象。

13.arctime(北極時間)

該屬性也是指定存檔時間的可選時間欄位。它還充當日期時間對象。(僅限 RAR3)

14.循環冗餘檢驗

該屬性用於指定未壓縮文件的 CRC-32。該屬性的值是一個無符號整數。

RAR5:可能是無。

15.blake2sp_hash

此屬性用於指定解壓縮數據的 Blake2SP 哈希。(僅限 RAR5)

16.卷

此屬性用於指定從 0 開始的卷 nr。

17.卷文件

此屬性用於指定文件開始的卷文件名。

18. file_redir

該屬性由(類型、標誌、目標)的元組組成。(僅限 RAR5)。如果不是「無」,則該文件是某種鏈接。(僅限 RAR5)

類型是常量之一:

  • RAR5_XREDIR_UNIX_SYMLINK: Unix simpleink
  • rar 5 xrdir windows _ symlink:windows symlink
  • RAR5 XREDIR WINDOWS _ JUNCTION:WINDOWS JUNCTION
  • RAR5_XREDIR_HARD_LINK:到目標的硬鏈接
  • 當前文件是另一個歸檔條目的副本

標誌可能包含位:

  • RAR5_XREDIR_ISDIR: Symlink 指向一個目錄

19. is_dir()

如果條目是目錄,此方法用於返回真。

4.0 版新增。

20.is_symlink()

如果條目是符號鏈接,則此方法用於返回真。

4.0 版新增。

21.is_file()

如果條目是普通文件,則使用此方法返回 True。

4.0 版新增。

22.需要 _ 密碼()

如果數據受密碼保護存儲,此方法用於返回 True。

23. 地下()

如果條目是目錄,此方法用於返回真。

自 4.0 版以來已棄用。

rarfile 模塊的稀疏文件類作為對象的基類工作,類似於 RarFile.open() 返回的文件。

基礎:我。拉維巴斯

稀疏文件類的語法如下所示:

語法:


class rarfile.RarExtFile

這個類提供公共方法和常見的循環冗餘校驗

行為:

  1. 沒有短讀- 讀(),並且讀 info() 按照要求讀。
  2. 沒有內部緩衝區;為此,我們必須使用buffere reader。

稀有文件類的一些屬性和方法如下所示:

1.名稱 =無

此屬性用於指定歸檔條目的文件名

2.讀取( n=-1 )

此方法用於從歸檔條目中讀取全部或指定數量的數據。

3.關閉()

此方法用於關閉打開的資源。

4.再入( buf

此方法用於定義直接讀入緩衝區的零拷貝。它返回讀取的位元組。

5.tell()

此方法返回未壓縮數據中的當前讀取位置。

6.尋道(偏移由此= 0 )

此方法用於查找數據。在未壓縮的文件中,查找是通過實際查找來完成的,因此速度很快。在壓縮文件中,向前搜索是緩慢的,通過向前讀取,向後通過從頭開始重新打開和解壓縮。

7.可讀()

此方法返回真

8.可寫()

此方法返回 False,因為不支持寫入。

9.可查找()

該方法返回真,因為支持查找,儘管在壓縮文件上速度很慢。

10. readall()

此方法用於讀取所有剩餘數據

11. 文件()

此方法返回基礎文件描述符(如果存在)。如果 IO 對象不使用文件描述符,則會引發 OSError。

12.isatty()

如果這是「互動式」流,則此方法返回。如果無法確定,它也會返回 False。

13. 讀取行()

此方法用於從流中讀取並返回一行。對於二進位文件,行結束符總是 b ‘n 對於文本文件,我們可以使用 newlines 參數打開,以便選擇可識別的行結束符。如果給定大小,將最多讀取大小位元組。

14.讀取線()

此方法用於從流中返回一個行列表。我們可以指定控制讀取行數的提示:如果到目前為止所有行的總大小(以位元組/字元為單位)超過提示,將不再讀取行。

rarfile 模塊的 nsdatetime 類表示攜帶納秒的 datetime。此類不支持算術,將丟失納秒。

基地: 日期時間.日期時間

4.0 版新增

nsdatetime 類的語法如下所示:

語法:


class rarfile.nsdatetime

nsdatetime 類的一些屬性和方法如下所示:

1.十億分之一秒

該屬性由從 0 到 999999999 的納秒數組成。

2.等值格式(sep = ‘T ‘,timespec = ‘ auto ‘)

默認情況下,此方法用於以納秒精度格式化。

3.像散區(tz =無)

此方法用於轉換到新時區。

4.替換(年=無月=無日=無小時=無分=無秒=無微秒=無tzinfo =無, **折=無納秒=無*)

此方法用於返回新的時間戳,並替換給定的欄位。

模塊的一些功能如下:

| 南號碼 | 功能 | 描述 |
| one |
rarfile.israrfile(x 文件) | 此功能用於檢查文件是否是 RAR 檔案。 |
| Two |
rarfile . is
rarfile _ sfx(xfile)** | 此功能用於檢查文件是否是支持 SFX 的 RAR 檔案。
它會從文件中讀取 2M。 |

模塊的一些常量如下

| 南號碼 | 常數 | 描述 |
| one |
稀有檔案。RAR_M0 = 48 | 這個常數表示沒有壓縮。 |
| Two |
稀有檔案。RAR_M1 = 49 | 該常數表示壓縮級別- m1,最快壓縮。 |
| three |
稀有檔案。RAR_M2 = 50 | 該常數代表壓縮級別- m2。 |
| four |
稀有檔案。RAR_M3 = 51 | 該常數代表壓縮級別- m3。 |
| five |
稀有檔案。RAR_M4 = 52 | 該常數代表壓縮級別 m4。 |
| six |
稀有檔案。RARM5 = 53 | 該常數代表壓縮級別- m5,也是最大壓縮。 |
| seven |
稀有檔案。rar
OS win32 = 2 | 這個常數代表操作系統的類型,即視窗。 |
| eight |
稀有檔案。rar
OS UNIX = 3 | 該常量代表操作系統的類型,即 UNIX。 |
| nine |
稀有檔案。rar
OS macos = 4 | 該常量代表操作系統的類型,即 MacOS(僅在 RAR3 中)。 |
| Ten |
稀有檔案。rar
OS beos = 5 | 該常數代表操作系統的類型,即 BeOS(僅在 RAR3 中)。 |
| Eleven |
稀有檔案。rar
OS OS 2 = 1 | 這個常量代表操作系統的類型,即 OS2(僅在 RAR3 中)。 |
| Twelve |
稀有檔案。rar
OS _ msdos = 0** | 該常量代表操作系統的類型,即 MS-DOS(僅在 RAR3 中)。 |

rarfile模塊的一些警告和異常如下:

| 南號碼 | 警告和異常 | 描述 |
| one | 類 rarfile。取消支持降低 | 當歸檔文件使用 rarfile模塊不支持的功能時,會出現此警告。
4.0 版新增。 |
| Two | 類 rarfile。錯誤 | 這個異常是 rarfile 錯誤的基類。 |
| three | 類珍品。BadRarFile | 當歸檔中存在不正確的數據時,會引發此異常。 |
| four | class rarfile .我們的檔案 | 當文件不是 RAR 歸檔文件時,會引發此異常。 |
| five | 類 rarfile。巴德拉爾名稱 | 當系統無法猜測多部分名稱組件時,會引發此異常。 |
| six | 類珍品。北美防空司令部〔t1〕 | 當在 RAR 找不到文件時,會引發此異常。 |
| seven | 類 rarfile。密碼要求 | 當文件需要密碼時,會引發此異常。 |
| eight | 類 rarfile。NeedFirstVolume(msg,volume) | 當我們必須從第一卷開始時,這個異常就出現了。 |
| nine | 類 rarfile。NoCrypto | 當我們無法解析加密的標頭時會引發此異常-沒有可用的加密。 |
| Ten | 類 rarfile.RarExecError | 當問題由 unrar 報告時,會引發此異常。 |
| Eleven | 類珍品。難得警告〔t1〕 | 當出現非致命錯誤時,會引發此異常。 |
| Twelve | 類 rarfile.RarFatalError | 當出現致命錯誤時,會引發此異常。 |
| Thirteen | 類珍品。rarcrcerror〔t1〕 | 當解包過程中出現循環冗餘校驗錯誤時,會引發此異常。 |
| Fourteen | class rarfile . rarlockedarchive error | 當我們試圖修改鎖定的歸檔文件時,會引發此異常。 |
| Fifteen | 類珍品。RarWriteError | 當我們嘗試編寫 RAR 文件時,會引發此異常。 |
| Sixteen | 類 rarfile。RarOpenError | 當我們嘗試打開 RAR 文件時,會引發此異常。 |
| Seventeen | 類 rarfile.RarUserError | 此異常代表用戶錯誤。 |
| Eighteen | 類珍品。記憶錯誤〔t1〕 | 此異常表示內存錯誤。 |
| Nineteen | 類珍品。RarCreateError | 此異常表示創建錯誤。 |
| Twenty | 類 rarfile。rarnofilesterror | 當沒有找到與模式匹配的文件時,會引發此異常。 |
| Twenty-one | 類 rarfile。RarUserBreak | 當用戶停止時,會引發此異常。 |
| Twenty-two | 類珍品。RarWrongPassword | 此異常會引發不正確的密碼。 |
| Twenty-three | 類珍品。rarunnowerror〔t1〕 | 此異常表示未知的退出代碼。 |
| Twenty-four | 類珍品。罕見信號出口〔t1〕 | 當解開程序發出信號退出時,會引發此異常。 |
| Twenty-five | 類珍品。rarcannotexecd〔t1〕 | 當找不到可執行文件時,會引發此異常。 |

現在讓我們考慮以下演示 rarfile 模塊工作的示例。

示例:


# importing the required module
import rarfile

# using the RarFile class
myRarFile = rarfile.RarFile("myfolder.rar")

# iterating through the files in the archive
for file in myRarFile.infolist():
    # printing the filenames and file sizes
    print(file.filename, file.file_size)

    # checking the readme file
    if file.filename == "myfolder/readme.txt":
        # reading the file
        print(myRarFile.read(file))

輸出:

myfolder/helloWorld.py 101
myfolder/image.jpg 281466
myfolder/readme.txt 49
b'Hello Python learners!\r\nWelcome to Javatpoint.com'
myfolder/ 0

說明:

在上面的代碼片段中,我們已經導入了所需的模塊。然後我們使用 RarFile 類來選擇 RAR 檔案。然後,我們使用的循環來遍歷存檔中的文件,並列印文件名及其大小。然後,我們使用 if 條件語句來檢查 RAR 檔案是否包含 readme.txt 文件。最後,我們使用 read() 方法讀取了文件。


原創文章,作者:P96R3,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127278.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
P96R3的頭像P96R3
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論