在下面的教程中,我們將討論 Python 編程語言的 rarfile
模塊。我們將理解 rarfile
模塊的不同類以及一些例子。
那麼,讓我們開始吧。
Python 中的 rarfile
模塊用於讀取 RAR 檔案。該界面儘可能像 zipfile 一樣構建。
rarfile
模塊的基本功能:
- 這個模塊用 Python 編程語言解析檔案結構。
- 它使用 Python 提取非壓縮文件。
- 它還會提取使用 unrar 壓縮的文件。
- 可選地,我們也可以將壓縮數據寫入臨時文件,以加快解密速度;否則,它需要在每次執行時掃描整個歸檔。
現在,在我們開始使用該模塊之前,讓我們安裝它。
為了安裝 rarfile 模塊,我們將使用 pip 安裝程序執行如下所示的命令:
語法:
$ pip3 install rarfile
為了驗證模塊安裝是否正確,我們可以創建一個新文件,並添加 import 語句,看看它是否返回任何錯誤。
文件:驗證. py
import rarfile
現在,保存 Python 文件,並使用命令提示符運行執行命令:
語法:
$ python verify.py
如果上面的 Python 文件沒有引起任何導入錯誤,我們就可以進入臉書信使機器人構建程序了。但是,如果它確實引發了異常,建議重新安裝該模塊並參考其官方文檔。
現在,讓我們了解一下 rarfile 模塊的基礎知識。
rarfile 模塊提供了多個類,我們可以根據需要使用。這些類別是:
- RarFile 類
- RarInfo 級
- 罕見的 ExtFile 類
- 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 =無)
此方法用於將所有文件提取到當前目錄中。
參數:
- 路徑-這是一個可選參數,包括目標路徑。
- 成員-這是另一個可選參數,包括文件的名稱或 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
這個類提供公共方法和常見的循環冗餘校驗
行為:
- 沒有短讀- 讀(),並且讀 info() 按照要求讀。
- 沒有內部緩衝區;為此,我們必須使用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