添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
无邪的蟠桃  ·  技术周刊 ...·  2 年前    · 
急躁的投影仪  ·  excel ...·  2 年前    · 
·  阅读 Python unzip:如何提取单个或多个文件

Python ZipFile是一类用于读写ZIP文件的zipfile模块。ZIP是支持无损数据压缩的档案文件格式。 通过无损压缩算法,原始数据可以完全从压缩后的数据中重构出来。

一个ZIP文件是一个包含一个或多个压缩文件的单一文件,提供了一种使大文件变小并将相关文件放在一起的简单方法。

Python解压缩

要在Python中解压缩一个文件,使用ZipFile.extractall()方法。extractall() 方法将 路径、成员、pwd 作为参数,并提取所有内容。

为了使用Python处理Zip文件,我们将使用一个内置的Python模块,叫做 zipfile 。在Python的zipfile模块中,ZipFile类提供了一个成员函数来提取所有的ZIP档案内容。

ZipFile.extractall(path=None, members=None, pwd=None)

它接受以下参数:

  • path:需要提取ZIP文件的位置;如果没有提供,它将提取当前目录中的内容。
  • members:要提取的文件的列表。如果没有提供这个参数,它将提取压缩文件中的所有文件。
  • pwd:如果压缩文件是加密的,在这个参数中传递密码,默认为None
  • Python unzip的例子

    在我当前的工作目录中,有一个名为Mail3.zip 的压缩文件, 我想用ZipFile.extractall()方法来解压它。

    请看下面的代码:

    # app.py
    from zipfile import ZipFile
    with ZipFile('Mail3.zip', 'r') as zipObj:
       # Extract all the contents of zip file in current directory
       zipObj.extractall()
    
    python3 app.py
    

    它将提取同一目录下你的编程app.py文件中的文件。

    它将提取当前目录下的压缩包中的所有文件。如果同名的文件在提取位置已经存在,它们将被覆盖。

    我们使用Python with语句来打开文件。"Python with "确保在程序执行离开with语句的上下文后,打开的文件描述符会自动关闭。

    从一个压缩文件中提取所有文件到不同的目录

    我们可以从 zip 文件中提取所有的文件到不同的目录,要做到这一点,我们需要在 extractall() 中传递目标位置作为一个参数。路径可以是相对的,也可以是绝对的。

    请看下面的代码:

    # app.py
    from zipfile import ZipFile
    with ZipFile('Mail3.zip', 'r') as zipObj:
       # Extract all the contents of zip file in different directory
       zipObj.extractall('temp')
       print('File is unzipped in temp folder') 
    

    一个ZipFile对象是通过调用ZipFile构造函数制作的,它接受Zip文件名和模式参数。接下来,我们以READ模式创建ZipFile对象,并将其命名为zipObj。

    在输出中。如果临时文件夹不存在,它将在当前目录下创建该文件夹,并解压Mail3.zip文件的所有内容。

    python3 app.py
    File is unzipped in temp folder
    

    根据条件从一个大的压缩文件中提取文件

    我们有一个巨大的压缩文件,我们需要从存档的数千个文件中提取几个文件。从一个大的压缩文件中解压缩所有的文件可能需要几分钟。但是如果你只对归档文件中的几个文件感兴趣,那么我们可以不解压缩整个文件,而是从压缩文件中提取单个文件。

    Python ZipFile类提供了一个成员函数,可以从ZIP文件中提取一个单一的文件。

    ZipFile.extract(member, path=None, pwd=None)
    

    请看下面的代码:

    # app.py
    from zipfile import ZipFile
    with ZipFile('Mail3.zip', 'r') as zipObject:
       listOfFileNames = zipObject.namelist()
       for fileName in listOfFileNames:
           if fileName.endswith('.py'):
               # Extract a single file from zip
               zipObject.extract(fileName, 'temp_py')
               print('All the python files are extracted')
    

    如果文件名的扩展名是.py,就会在temp_py 文件夹内提取它们。否则,它不会提取文件。

    在Python中解压缩文件是非常容易的,因为Python提供了zipfile 模块。

    zipfile 模块具有根据条件解压单个或多个文件的所有功能。

    本教程到此结束。

    Python zip()

    Python zip 列表的列表

    Python zip 字典

    解压缩Python图元

    将列表转为数据框

    Python list to dictionary

    分类:
    人工智能
    标签: