Python rarfile 模块2024 年 8 月 29 日 | 阅读 12 分钟 在下面的教程中,我们将讨论 Python 编程语言的 rarfile 模块。我们将通过一些示例来了解 rarfile 模块的不同类。 那么,让我们开始吧。 了解 Python rarfile 模块Python 中的 rarfile 模块用于读取 RAR 压缩包。其接口设计得尽可能与 zipfile 类似。 rarfile 模块的基本功能
现在,在我们开始使用该模块之前,让我们先安装它。 如何在 Python 中安装 rarfile 模块?为了安装 rarfile 模块,我们将使用 pip 安装程序,遵循以下命令 语法 为了验证模块是否正确安装,我们可以创建一个新文件并添加 import 语句,看看是否会返回任何错误。 文件:verify.py 现在,保存 Python 文件并使用命令提示符运行执行命令 语法 如果上述 Python 文件没有引发任何导入错误,我们就可以继续进行 Facebook Messenger 机器人的构建过程。但是,如果它确实引发了异常,建议重新安装模块并参考其官方文档。 现在,让我们来了解 rarfile 模块的基础知识。 rarfile 模块的类rarfile 模块提供了多个类,我们可以根据需求使用。这些类是
我们将简要讨论这些类。 了解 RarFile 类rarfile 模块的 RarFile 类用于解析 RAR 结构,提供对压缩包中文件的访问。 RarFile 类的执行语法如下所示 语法 RarFile 类的一些方法和属性如下所示 1. comment= None 此属性用于说明压缩包注释。该值可以是 Unicode 字符串或 None。 2. filename= None 此属性用于提供文件名(如果可用)。该值可以是 Unicode 字符串或 None。 3. __enter__() 此方法用于打开上下文。 4. __exit__(type, value, traceback) 此方法用于退出上下文。 5. __iter__() 此方法用于遍历成员。 6. setpassword(pwd) 此方法用于设置提取过程中使用的密码。 7. needs_password() 如果任何压缩包条目需要密码才能提取,此方法返回 True。 8. namelist() 此方法返回一个包含压缩包中文件名的列表。 9. infolist() 此方法返回压缩包中所有文件/目录的 RarInfo 对象。 10. volumelist() 此方法返回压缩包分卷的文件名。 如果压缩包只有一个分卷,则列表包含主压缩包文件的名称。 11. getinfo(name) 此方法返回文件的 RarInfo。 12. open(name, mode = 'r', pwd = None) 此方法返回一个类文件对象 (RarExtFile),可以从中读取数据。 该对象实现了 io.RawIOBase 接口,因此我们可以进一步用 io.BufferReader 和 io.TextIOWrapper 包装它。 在 io 模块不可用的旧版本 Python 中,它仅实现 read()、seek()、tell() 和 close() 方法。 该对象是可查找的,尽管查找仅在未压缩的文件上速度较快。在压缩文件上,查找是通过预读和重新启动解压来实现的。 参数
13. read(name, pwd = None) 此方法返回压缩包条目的未压缩数据。 建议对较大的文件使用 open() 方法。 参数
14. close() 此方法用于释放打开的资源。 15. printdir(file = None) 此方法用于将压缩包中的文件列表打印到 stdout 或给定的文件中。 16. extract(member, path = None, pwd = None) 此方法用于将单个文件提取到当前目录。 参数
17. extractall(path = None, members = None, pwd = None) 此方法用于将所有文件提取到当前目录。 参数
18. testrar(pwd = None) 此方法用于读取所有文件并测试 CRC。 19. strerror() 如果解析失败,此方法返回一个错误字符串;如果未发生异常,则返回 None。 了解 RarInfo 类rarfile 模块的 RarInfo 类用作 RAR 压缩包中的一个条目。 作为 datetime 的时间戳在 RAR3 中不带时区,在 RAR5 压缩包中带有 UTC 时区 RarInfo 类的执行语法如下所示 语法 RarInfo 类的一些方法和属性如下所示 1. filename 此属性包含带相对路径的文件名。此属性的值始终是一个 Unicode 字符串,指定路径,路径分隔符为 '/'。 2. date_time 此属性包含文件修改的时间戳。它可以作为一个元组(年、月、日、时、分、秒)使用。RAR5 允许压缩包中缺少该字段,此时它为 None。 3. comment 此属性包含可选的文件注释字段。该值由一个 Unicode 字符串组成。(仅限 RAR3) 4. file_size 此属性用于指定未压缩大小。 5. compress_size 此属性用于指定压缩后的大小。 6. compress_type 此属性用于指定压缩方法:RAR_M0, ..., RAR_M5 常量之一。 7. extract_version 此属性包含解压所需的最低 RAR 版本。格式为 (主版本号*10 + 次版本号),因此 2.9 是 29。 RAR3:10、20、29 RAR5 在压缩包中没有这样的字段,它被设置为 50。 8. host_os 此属性指定主机操作系统类型,是 RAR_OS_* 常量之一。 RAR3: RAR_OS_WIN32, RAR_OS_UNIX, RAR_OS_MSDOS, RAR_OS_OS2, RAR_OS_BEOS RAR5:RAR_OS_WIN32、RAR_OS_UNIX 9. mode 此属性用于指定文件属性。它可能是 dos 风格或 unix 风格,具体取决于 host_os。 10. mtime 此属性用于指定文件的修改时间。该值可以与 date_time 属性相同;但是,它是一个具有扩展精度的 datetime 对象。 11. ctime 此属性是一个可选的时间字段,指定创建时间。它也作为一个 datetime 对象。 12. atime 此属性也是一个可选的时间字段,指定最后访问时间。它也作为一个 datetime 对象。 13. arctime 此属性也是一个可选的时间字段,指定归档时间。它也作为一个 datetime 对象。(仅限 RAR3) 14. CRC 此属性用于指定未压缩文件的 CRC-32。此属性的值是一个无符号整数。 RAR5:可能为 None。 15. blake2sp_hash 此属性用于指定解压缩数据的 Blake2SP 哈希值。(仅限 RAR5) 16. volume 此属性用于指定卷号,从 0 开始。 17. volume_file 此属性用于指定文件开始所在的分卷文件名。 18. file_redir 此属性包含一个元组 (type, flags, target)。(仅限 RAR5)。如果不为 None,则该文件是某种链接。(仅限 RAR5) Type 是以下常量之一
Flags 可能包含位
19. is_dir() 此方法用于返回 True 如果条目是目录。 4.0 版本新增。 20. is_symlink() 此方法用于返回 True 如果条目是符号链接。 4.0 版本新增。 21. is_file() 此方法用于返回 True 如果条目是普通文件。 4.0 版本新增。 22. needs_password() 如果数据存储受密码保护,则此方法返回 True。 23. isdir() 此方法用于返回 True 如果条目是目录。 自 4.0 版本起已弃用。 了解 RarExtFile 类rarfile 模块的 RarExtFile 类作为 RarFile.open() 返回的类文件对象的基类。 基类:io.RawIOBase RarExtFile 类的语法如下所示 语法 此类提供公共方法和通用的 CRC 检查 行为
RarExtFile 类的一些属性和方法如下所示 1. name= None 此属性用于指定压缩包条目的文件名 2. read(n=-1) 此方法用于从压缩包条目中读取全部或指定数量的数据。 3. close() 此方法用于关闭打开的资源。 4. readinto(buf) 此方法用于定义直接读入缓冲区的零拷贝读取。它返回读取的字节数。 5. tell() 此方法返回未压缩数据中的当前读取位置。 6. seek(offset, whence = 0) 此方法用于定位数据。在未压缩的文件上,定位通过实际的 seek 操作实现,因此速度很快。在压缩文件上,速度较慢——向前定位通过预读实现,向后定位通过重新打开并从头开始解压缩实现。 7. readable() 此方法返回 True 8. writable() 此方法返回 False,因为不支持写入。 9. seekable() 此方法返回 True,因为支持定位,尽管在压缩文件上速度较慢。 10. readall() 此方法用于读取所有剩余数据 11. fileno() 如果存在底层文件描述符,此方法将返回它。如果 IO 对象不使用文件描述符,则会引发 OSError。 12. isatty() 此方法返回这是否是一个“交互式”流。如果无法确定,它也返回 False。 13. readline() 此方法用于从流中读取并返回一行。对于二进制文件,行终止符始终为 b'n';对于文本文件,我们可以使用 open 的 newlines 参数来选择识别的行终止符。如果给定了 size,最多将读取 size 个字节。 14. readlines() 此方法用于从流中返回一个行列表。我们可以指定 hint 来控制读取的行数:如果到目前为止所有行的总大小(以字节/字符为单位)超过 hint,则不会再读取更多行。 了解 nsdatetime 类rarfile 模块的 nsdatetime 类表示携带纳秒的 Datetime。此类不支持算术运算,并且会丢失纳秒。 基类: datetime.datetime 4.0 版本新增 nsdatetime 类的语法如下所示 语法 nsdatetime 类的一些属性和方法如下所示 1. nanosecond 此属性包含纳秒数,范围从 0 到 999999999。 2. isoformat(sep = 'T', timespec = 'auto') 默认情况下,此方法用于以纳秒精度进行格式化。 3. astimezone(tz=None) 此方法用于转换为新的时区。 4. replace(year = None, month = None, day = None, hour = None, minute = None, second = None, microsecond = None, tzinfo = None, *, fold = None, nanosecond = None) 此方法用于返回替换了给定字段的新时间戳。 rarfile 模块的函数rarfile 模块的一些函数如下
rarfile 模块的常量rarfile 模块的一些常量如下
rarfile 模块的警告和异常rarfile 模块的一些警告和异常如下
rarfile 模块的工作原理现在让我们考虑以下示例,演示 rarfile 模块的工作原理。 示例 输出 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 压缩包。接着,我们使用 for 循环遍历压缩包中存在的文件,并打印文件名及其大小。然后,我们使用 if 条件语句来检查 RAR 压缩包是否包含 readme.txt 文件。最后,我们使用 read() 方法读取了该文件。 下一个主题使用 Python 进行词干提取 |
我们请求您订阅我们的新闻通讯以获取最新更新。