GVKun编程网logo

如何使用Python的zipfile模块在ZIP文件中的文件上设置权限(属性)?(zipfile python)

10

在本文中,我们将为您详细介绍如何使用Python的zipfile模块在ZIP文件中的文件上设置权限的相关知识,并且为您解答关于属性?的疑问,此外,我们还会提供一些关于python-zipfile模块、

在本文中,我们将为您详细介绍如何使用Python的zipfile模块在ZIP文件中的文件上设置权限的相关知识,并且为您解答关于属性?的疑问,此外,我们还会提供一些关于python - zipfile模块、Python 2.x 中如何使用zipfile模块创建和解压ZIP文件、Python 3.x 中如何使用zipfile模块创建和解压ZIP文件、Python zipfile从zip文件内的目录中提取文件的有用信息。

本文目录一览:

如何使用Python的zipfile模块在ZIP文件中的文件上设置权限(属性)?(zipfile python)

如何使用Python的zipfile模块在ZIP文件中的文件上设置权限(属性)?(zipfile python)

当我从使用Pythonzipfile模块创建的ZIP文件中提取文件时,所有文件都不可写,只读等。

该文件正在Linux和Python 2.5.2下创建和提取。

据我所知,我需要ZipInfo.external_attr为每个文件设置属性,但是似乎找不到任何地方记录此文件,有人可以启发我吗?

答案1

小编典典

这似乎可行(感谢Evan,将其放在此处以使该行符合上下文):

buffer = "path/filename.zip"  # zip filename to write (or file-like object)name = "folder/data.txt"      # name of file inside zip bytes = "blah blah blah"      # contents of file inside zipzip = zipfile.ZipFile(buffer, "w", zipfile.ZIP_DEFLATED)info = zipfile.ZipInfo(name)info.external_attr = 0777 << 16L # give full access to included filezip.writestr(info, bytes)zip.close()

我仍然希望看到一些记录此内容的信息…我发现的另一个资源是有关Zip文件格式的注释:http
:
//www.pkware.com/documents/casestudies/APPNOTE.TXT

python - zipfile模块

python - zipfile模块

 

import zipfile

# f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64=False)
# filename是一个文件的路径
# mode  a :追加模式
# mode  r :只读模式
# mode  w :写入模式
# allowZip64:是个bool型变量,当设置为True的时候就是说可以用来创建大小大于2G的zip文件,默认值是True;

# 可判断是否是压缩文件:
# zipfile.is_zipfile(filename)

# 将多个文件压缩成一个文件.
# with zipfile.ZipFile(''test2.zip'', mode=''w'') as zipf:
#    zipf.write(''a2.txt'')
#    zipf.write(''a3.txt'')
#    zipf.write(''a4.txt'')
#    zipf.write(''a.txt'')


# 将文件解压到 abc文件内(当前文件下的abc文件)
# with zipfile.ZipFile(''test.zip'') as zipf:
#     zipf.extractall(''abc'')

# 获取压缩包内的文件名:
# with zipfile.ZipFile(''test.zip'',''r'') as zipf:
#     for i in zipf.namelist():
#         print(i)

# 获取压缩包内的文件对象,可查看文件名,大小,mode
# with zipfile.ZipFile(''test.zip'',''r'') as zipf:
#     for i in zipf.infolist():
#         print(i)
# <ZipInfo filename=''a2.txt'' filemode=''-rw-rw-rw-'' file_size=43>

# 将zip文件的目录结构打印到stdout上,包括每个文件的path,修改时间和大小
# with zipfile.ZipFile(''test.zip'',''r'') as zipf:
#     zipf.printdir()

# 打开压缩文件中的一个文件
# with zipfile.ZipFile(''test.zip'') as zipf:
#     info = zipf.open("a.txt",''r'')
# print(info.read())

 

四种压缩模式: 

import zipfile"""ZIP_STORED (no compression), ZIP_DEFLATED (requires zlib),
 | ZIP_BZIP2 (requires bz2) or ZIP_LZMA (requires lzma)."""

# ZIP_STORED
# with zipfile.ZipFile(''a.zip'',''w'',compression=0) as z:
#     z.write(''a1.txt'')
#     z.write(''a2.txt'')
#     z.write(''a3.txt'')

# ZIP_LZMA
# with zipfile.ZipFile(''b.zip'',''w'',compression=zipfile.ZIP_DEFLATED) as z:
#     z.write(''a1.txt'')
#     z.write(''a2.txt'')
#     z.write(''a3.txt'')

# ZIP_BZIP2
# with zipfile.ZipFile(''c.zip'',''w'',compression=zipfile.ZIP_BZIP2) as z:
#     z.write(''a1.txt'')
#     z.write(''a2.txt'')
#     z.write(''a3.txt'')

# ZIP_LZMA
# with zipfile.ZipFile(''d.zip'',''w'',compression=zipfile.ZIP_LZMA) as z:
#     z.write(''a1.txt'')
#     z.write(''a2.txt'')
#     z.write(''a3.txt'')

压缩效果:

 

如何压缩目录以及目录内的文件:

注意:

  直接压缩文件的目录,那么压缩内只有压缩的目录,却没目录下的文件。

这里要用到os.walk 文件遍历的方法。

 

top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
  • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
# with zipfile.ZipFile(''CC2.zip'',''w'',compression=zipfile.ZIP_DEFLATED) as z:
#     for root, dirs, files in os.walk(r".\text", topdown=False):
#         for name in files:
#             print(os.path.join(root, name))
#             z.write(os.path.join(root, name))

 

os.path.join(root, name) 拼接目录下的文件路径,然后传递给zipfile.write方法保存

 

Python 2.x 中如何使用zipfile模块创建和解压ZIP文件

Python 2.x 中如何使用zipfile模块创建和解压ZIP文件

python 2.x 中如何使用 zipfile 模块创建和解压zip文件

简介:
ZIP 文件是一种常用的归档文件格式,常用于压缩和打包文件和文件夹。Python 提供了 zipfile 模块来创建和解压 ZIP 文件,本文将介绍如何在 Python 2.x 中使用 zipfile 模块进行 ZIP 文件的创建和解压。

安装:
Python 2.x 默认情况下已经包含了 zipfile 模块,无需额外安装。

创建 ZIP 文件:
下面是一个示例代码,展示如何使用 zipfile 模块创建一个 ZIP 文件,其中包含了指定文件和文件夹。

import zipfile
import os

def create_zip_file(zip_file_name, file_list):
    with zipfile.ZipFile(zip_file_name, ''w'') as zip_file:
        for file_path in file_list:
            zip_file.write(file_path, os.path.basename(file_path))

# 示例使用
files = [''file1.txt'', ''file2.txt'', ''folder'']  # 要包含在 ZIP 文件中的文件列表
create_zip_file(''my_archive.zip'', files)
登录后复制

上述代码中,我们首先导入了 zipfile 和 os 模块。然后,定义了一个 create_zip_file 函数,该函数接受一个 ZIP 文件名和一个文件列表作为参数。函数内部使用了 zipfile 模块的 ZipFile 类来创建一个 ZIP 文件实例,然后通过循环遍历文件列表,并使用 ZipFile 对象的 write 方法将文件添加到 ZIP 文件中,使用 os 模块的 basename 方法获取文件的基本文件名。最后,在 with 语句块结束时,ZIP 文件将自动关闭。

立即学习“Python免费学习笔记(深入)”;

解压 ZIP 文件:
下面是一个示例代码,展示如何使用 zipfile 模块解压缩一个 ZIP 文件。

import zipfile

def extract_zip_file(zip_file_name, extract_folder):
    with zipfile.ZipFile(zip_file_name, ''r'') as zip_file:
        zip_file.extractall(extract_folder)

# 示例使用
zip_file = ''my_archive.zip''  # 要解压的 ZIP 文件名称
extract_folder = ''extracted''  # 解压后的文件夹名称
extract_zip_file(zip_file, extract_folder)
登录后复制

上述代码中,我们定义了一个 extract_zip_file 函数,该函数接受一个 ZIP 文件名和一个解压缩文件夹名作为参数。函数内部使用了 zipfile 模块的 ZipFile 类来创建一个 ZIP 文件实例,并通过 ZipFile 对象的 extractall 方法将 ZIP 文件解压到指定的文件夹。同样地,在 with 语句块结束时,ZIP 文件将自动关闭。

总结:
通过使用 zipfile 模块,我们可以方便地在 Python 2.x 中创建和解压 ZIP 文件。本文介绍了如何使用 zipfile 模块进行 ZIP 文件的创建和解压,并提供了相应的代码示例。这些示例代码可以在实际应用中方便地使用,希望对大家有所帮助。

以上就是Python 2.x 中如何使用zipfile模块创建和解压ZIP文件的详细内容,更多请关注php中文网其它相关文章!

Python 3.x 中如何使用zipfile模块创建和解压ZIP文件

Python 3.x 中如何使用zipfile模块创建和解压ZIP文件

python 3.x 中如何使用zipfile模块创建和解压zip文件

引言:
在Python编程中,处理文件压缩和解压缩是一项常见的任务。zipfile模块提供了一种方便的方式来创建和解压ZIP文件。本文将介绍如何使用zipfile模块来创建和解压ZIP文件,并提供相应的代码示例。

一、创建ZIP文件:
要创建一个ZIP文件,我们需要先导入zipfile模块,然后使用ZipFile对象来创建和写入文件。下面是一个简单的示例代码:

import zipfile

# 创建一个名为example.zip的ZIP文件
with zipfile.ZipFile(''example.zip'', ''w'') as myzip:
    # 向ZIP文件中写入一个名为file1.txt的文件
    myzip.write(''file1.txt'')
    # 向ZIP文件中写入一个名为file2.txt的文件
    myzip.write(''file2.txt'')
    # 可以通过使用相对路径来写入文件到ZIP文件的指定目录下
    myzip.write(''folder/file3.txt'', ''data/file3.txt'')
登录后复制

在上面的代码中,我们使用了Python的上下文管理器(with语句),确保在完成操作后关闭ZIP文件。在with语句内部,我们通过write()方法来向ZIP文件中写入文件。write()方法包含两个参数,第一个参数是要写入的文件名或路径,第二个参数是文件在ZIP文件中的路径。如果第二个参数不提供,则文件将被写入ZIP文件的根目录。

二、解压ZIP文件:
要解压一个ZIP文件,我们可以使用zipfile.ZipFile对象的extractall()方法。下面是一个解压ZIP文件的示例代码:

立即学习“Python免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

import zipfile

# 打开名为example.zip的ZIP文件
with zipfile.ZipFile(''example.zip'', ''r'') as myzip:
    # 解压ZIP文件的所有内容到当前目录下
    myzip.extractall()
登录后复制

在上面的代码中,我们使用了与创建ZIP文件类似的上下文管理器,确保在完成解压操作后关闭ZIP文件。我们通过extractall()方法来解压ZIP文件的所有内容到当前目录下。如果需要将ZIP文件解压到指定目录,可以在extractall()方法中传入一个参数,指定解压目标路径。

三、遍历ZIP文件内容:
除了创建和解压ZIP文件,我们还可以遍历ZIP文件中的所有文件和目录。zipfile.ZipFile对象提供了namelist()方法来获取ZIP文件中的所有文件和目录列表。下面是一个遍历ZIP文件内容的示例代码:

import zipfile

# 打开名为example.zip的ZIP文件
with zipfile.ZipFile(''example.zip'', ''r'') as myzip:
    # 获取ZIP文件中的所有文件和目录列表
    filelist = myzip.namelist()
    
    # 遍历文件列表并打印
    for filename in filelist:
        print(filename)
登录后复制

在上面的代码中,我们使用了namelist()方法获取ZIP文件的文件列表,并将其赋值给变量filelist。然后,我们使用for循环遍历filelist并打印文件名。

结论:
使用zipfile模块,我们可以轻松地创建和解压ZIP文件。本文介绍了如何使用zipfile模块创建ZIP文件、解压ZIP文件和遍历ZIP文件内容,并提供了相应的代码示例。希望本文对于你在Python编程中处理文件压缩和解压缩的任务有所帮助。

以上就是Python 3.x 中如何使用zipfile模块创建和解压ZIP文件的详细内容,更多请关注php中文网其它相关文章!

Python zipfile从zip文件内的目录中提取文件

Python zipfile从zip文件内的目录中提取文件

是用我的手机写的,但我希望它能正常工作

from pathlib import Path

with ZipFile(zipfile_path,"r") as zf:
            for f in zf.namelist():
                if f.startswith('/'):
                    continue
                
                source = zf.open(f)
                target = open(target_dir / Path(f).name,"wb")

                with source,target:
                    shutil.copyfileobj(source,target)

今天关于如何使用Python的zipfile模块在ZIP文件中的文件上设置权限属性?的介绍到此结束,谢谢您的阅读,有关python - zipfile模块、Python 2.x 中如何使用zipfile模块创建和解压ZIP文件、Python 3.x 中如何使用zipfile模块创建和解压ZIP文件、Python zipfile从zip文件内的目录中提取文件等更多相关知识的信息可以在本站进行查询。

本文标签: