python【模块】zipfile压缩文件管理(2)

简介: python【模块】zipfile压缩文件管理(2)

6. 创建、填充和提取您自己的 ZIP 文件

到目前为止,您已经学习了如何使用现有的 ZIP 文件。您已经学会了使用ZipFile. 您还学习了如何读取相关元数据以及如何提取给定 ZIP 文件的内容。


在本节中,您将编写一些实际示例,帮助您了解如何使用zipfile和其他 Python 工具从多个输入文件和整个目录创建 ZIP 文件。您还将学习如何使用zipfile文件压缩等。

6.1 从多个常规文件创建 ZIP 文件

有时您需要从多个相关文件创建 ZIP 存档。这样,您可以将所有文件放在一个容器中,以便通过计算机网络分发它们或与朋友或同事共享它们。为此,您可以创建一个目标文件列表,并使用ZipFile循环将它们写入存档:

>> import zipfile
>>> filenames = ["hello.txt", "lorem.md", "realpython.md"]
>>> with zipfile.ZipFile("multiple_files.zip", mode="w") as archive:
...     for filename in filenames:
...         archive.write(filename)
...

在这里,您创建一个ZipFile对象,并将所需的存档名称作为其第一个参数。该"w"模式允许您将成员文件写入最终的 ZIP 文件。


该for循环遍历您的输入文件列表,并使用.write(). 一旦执行流程退出with语句,ZipFile自动关闭存档,为您保存更改。现在您有了一个multiple_files.zip存档,其中包含原始文件列表中的所有文件。

6.2 从目录构建 ZIP 文件

将目录的内容捆绑到单个存档中是 ZIP 文件的另一个日常用例。Python 有几个工具可以用来zipfile完成这项任务。例如,您可以使用pathlib来读取给定目录的内容。有了这些信息,您可以使用ZipFile.


在该python-zipfile/目录中,您有一个名为 的子目录source_dir/,其中包含以下内容:

source_dir/
├── hello.txt
├── lorem.md
└── realpython.md

source_dir/中,您只有三个常规文件。因为该目录不包含子目录,您可以使用pathlib.Path.iterdir()它直接迭代其内容。考虑到这个想法,以下是如何从以下内容构建 ZIP 文件source_dir/

>>> import pathlib
>>> import zipfile
>>> directory = pathlib.Path("source_dir/")
>>> with zipfile.ZipFile("directory.zip", mode="w") as archive:
...    for file_path in directory.iterdir():
...        archive.write(file_path, arcname=file_path.name)
...
>>> with zipfile.ZipFile("directory.zip", mode="r") as archive:
...     archive.printdir()
...
File Name                                        Modified             Size
realpython.md                             2021-09-07 19:50:10          428
hello.txt                                 2021-09-07 19:50:10           83
lorem.md                                  2021-09-07 19:50:10         2609

pathlib.Path在此示例中,您从源目录创建一个对象。第一条with语句创建一个ZipFile准备好写入的对象。然后调用.iterdir()返回一个遍历底层目录中条目的迭代器。


因为您在 中没有任何子目录source_dir/,所以该.iterdir()函数只生成文件。for循环遍历文件并将它们写入存档。


在这种情况下,您传递file_path.name给 的第二个参数.write()。此参数被调用arcname并保存结果存档中成员文件的名称。到目前为止,您看到的所有示例都依赖于 的默认值arcname,这与您作为第一个参数传递给.write().


如果您不传递file_path.nameto arcname,那么您的源目录将位于 ZIP 文件的根目录,这也可能是一个有效的结果,具体取决于您的需要。


现在检查root_dir/工作目录中的文件夹。在这种情况下,您会发现以下结构:

root_dir/
├── sub_dir/
│   └── new_hello.txt
├── hello.txt
├── lorem.md
└── realpython.md

您有通常的文件和一个包含单个文件的子目录。如果要创建具有相同内部结构的 ZIP 文件,则需要一个工具来递归遍历.root_dir/

以下是如何使用模块中的zipfilewith压缩完整的目录树,如上面的目录树:Path.rglob()pathlib

>>> import pathlib
>>> import zipfile
>>> directory = pathlib.Path("root_dir/")
>>> with zipfile.ZipFile("directory_tree.zip", mode="w") as archive:
...     for file_path in directory.rglob("*"):
...         archive.write(
...             file_path,
...             arcname=file_path.relative_to(directory)
...         )
...
>>> with zipfile.ZipFile("directory_tree.zip", mode="r") as archive:
...     archive.printdir()
...
File Name                                        Modified             Size
sub_dir/                                  2021-09-09 20:52:14            0
realpython.md                             2021-09-07 19:50:10          428
hello.txt                                 2021-09-07 19:50:10           83
lorem.md                                  2021-09-07 19:50:10         2609
sub_dir/new_hello.txt                     2021-08-31 17:13:44           13

在本例中,您使用递归Path.rglob()遍历. 然后将每个文件和子目录写入目标 ZIP 存档。root_dir/


这一次,您使用Path.relative_to()获取每个文件的相对路径,然后将结果传递给.write(). 这样,生成的 ZIP 文件最终具有与原始源目录相同的内部结构。同样,如果您希望源目录位于 ZIP 文件的根目录,则可以去掉这个参数。

6.3 压缩文件和目录

如果您的文件占用了太多磁盘空间,那么您可能会考虑压缩它们。Pythonzipfile支持一些流行的压缩方法。但是,该模块默认情况下不会压缩您的文件。如果你想让你的文件更小,那么你需要显式地为ZipFile.


通常,您将使用术语存储来指代写入 ZIP 文件而不进行压缩的成员文件。这就是为什么默认压缩方法ZipFile称为ZIP_STORED的原因,它实际上是指未压缩的成员文件,这些文件只是存储在包含的存档中。


该compression方法是 的初始化程序的第三个参数ZipFile。如果您想在将文件写入 ZIP 存档时压缩文件,则可以将此参数设置为以下常量之一:

持续的 压缩方法 所需模块
zipfile.ZIP_DEFLATED 放气 zlib
zipfile.ZIP_BZIP2 压缩包 bz2
zipfile.ZIP_LZMA LZMA lzma

这些是您当前可以使用的压缩方法ZipFile。一种不同的方法会引发NotImplementedError. zipfile从 Python 3.10开始,没有其他可用的压缩方法。


作为附加要求,如果您选择其中一种方法,则支持它的压缩模块必须在您的 Python 安装中可用。否则,您将得到一个RuntimeError异常,并且您的代码将中断。


关于压缩文件的另一个相关论点ZipFile是compresslevel. 此参数控制您使用的压缩级别。


使用 Deflate 方法,compresslevel可以从中获取整数。使用 Bzip2 方法,您可以从 传递整数。在这两种情况下,当压缩级别增加时,您会获得更高的压缩率和更低的压缩速度。0919


注意:二进制文件,例如 PNG、JPG、MP3 等,已经使用了某种压缩方式。因此,将它们添加到 ZIP文件可能不会使数据变得更小,因为它已经压缩到一定程度。


现在假设您要使用 Deflate 方法归档和压缩给定目录的内容,这是 ZIP 文件中最常用的方法。为此,您可以运行以下代码:

>>> import pathlib
>>> from zipfile import ZipFile, ZIP_DEFLATED
>>> directory = pathlib.Path("source_dir/")
>>> with ZipFile("comp_dir.zip", "w", ZIP_DEFLATED, compresslevel=9) as archive:
...     for file_path in directory.rglob("*"):
...         archive.write(file_path, arcname=file_path.relative_to(directory))
...

在此示例中,您传递9到compresslevel以获得最大压缩。要提供此参数,请使用关键字参数。您需要这样做,因为compresslevel它不是初始化程序的第四个位置参数。ZipFile


注意:初始化程序ZipFile采用第四个参数,称为allowZip64. 它是一个布尔参数,告诉为大于 4 GB

的文件ZipFile创建扩展名为 ZIP 文件。.zip64

6.4 按顺序创建 ZIP 文件

按顺序创建 ZIP 文件可能是您日常编程中的另一个常见要求。例如,您可能需要创建一个包含或不包含内容的初始 ZIP 文件,然后在新成员文件可用时立即追加它们。在这种情况下,您需要多次打开和关闭目标 ZIP 文件。


要解决此问题,您可以使用ZipFile附加模式 ( “a”),就像您已经完成的那样。此模式允许您安全地将新成员文件附加到 ZIP 存档而不截断其当前内容:

>>> import zipfile
>>> def append_member(zip_file, member):
...     with zipfile.ZipFile(zip_file, mode="a") as archive:
...         archive.write(member)
...
>>> def get_file_from_stream():
...     """Simulate a stream of files."""
...     for file in ["hello.txt", "lorem.md", "realpython.md"]:
...         yield file
...
>>> for filename in get_file_from_stream():
...     append_member("incremental.zip", filename)
...
>>> with zipfile.ZipFile("incremental.zip", mode="r") as archive:
...     archive.printdir()
...
File Name                                        Modified             Size
hello.txt                                 2021-09-07 19:50:10           83
lorem.md                                  2021-09-07 19:50:10         2609
realpython.md                             2021-09-07 19:50:10          428

在此示例中,append_member()是一个将文件 ( ) 附加到输入 ZIP 存档 ( ) 的函数。要执行此操作,该函数会在您每次调用时打开和关闭目标存档。使用函数来执行此任务允许您根据需要多次重用代码。memberzip_file


该get_file_from_stream()函数是一个生成器函数,用于模拟要处理的文件流。同时,for循环依次将成员文件添加到incremental.zipusing append_number(). 如果您在运行此代码后检查您的工作目录,那么您将找到一个incremental.zip包含您传递到循环中的三个文件的存档。

6.5 提取文件和目录

您对 ZIP 文件执行的最常见操作之一是将其内容提取到文件系统中的给定目录。您已经学习了使用.extract()和.extractall()从存档中提取一个或所有文件的基础知识。


再举一个例子,回到你的sample.zip文件。此时,存档包含四个不同类型的文件。你有两个.txt文件和两个.md文件。现在假设您只想提取.md文件。为此,您可以运行以下代码:

>>> import zipfile
>>> with zipfile.ZipFile("sample.zip", mode="r") as archive:
...     for file in archive.namelist():
...         if file.endswith(".md"):
...             archive.extract(file, "output_dir/")
...
'output_dir/lorem.md'
'output_dir/realpython.md'

with声明打开sample.zip供阅读。循环使用 遍历存档中的每个文件namelist(),而条件语句检查文件名是否以扩展名结尾.md。如果是这样,那么您将手头的文件提取到目标目录output_dir/,使用.extract().

7. 探索其他类zipfile

到目前为止,您已经了解了ZipFileZipInfo,它们是 中可用的两个类zipfile。该模块还提供了另外两个在某些情况下可以派上用场的类。这些类是zipfile.Pathzipfile.PyZipFile。在以下两节中,您将了解这些类的基础知识及其主要功能。

7.1 Path在 ZIP 文件中查找

当您使用您最喜欢的存档应用程序打开 ZIP 文件时,您会看到存档的内部结构。您可能在存档的根目录中有文件。您可能还有包含更多文件的子目录。存档看起来像文件系统上的普通目录,每个文件都位于特定路径。


该类zipfile.Path允许您构造路径对象以快速创建和管理给定 ZIP 文件中成员文件和目录的路径。该类有两个参数:


root接受一个 ZIP 文件,可以是ZipFile对象,也可以是物理 ZIP 文件的基于字符串的路径。

at保存存档中特定成员文件或目录的位置。它默认为空字符串,表示存档的根。

以你的老朋友sample.zip为目标,运行以下代码:

>>> import zipfile
>>> hello_txt = zipfile.Path("sample.zip", "hello.txt")
>>> hello_txt
Path('sample.zip', 'hello.txt')
>>> hello_txt.name
'hello.txt'
>>> hello_txt.is_file()
True
>>> hello_txt.exists()
True
>>> print(hello_txt.read_text())
Hello, Pythonista!
Welcome to Real Python!
Ready to try Python's zipfile module?

此代码显示zipfile.Path实现了对象共有的几个功能pathlib.Path。您可以使用.name. 您可以检查路径是否指向带有.is_file(). 您可以检查给定文件是否存在于特定 ZIP 文件中,等等。


Path还提供了.open()一种使用不同模式打开成员文件的方法。例如,下面的代码打开hello.txt以供阅读

>>> import zipfile
>>> hello_txt = zipfile.Path("sample.zip", "hello.txt")
>>> with hello_txt.open(mode="r") as hello:
...     for line in hello:
...         print(line)
...
Hello, Pythonista!
Welcome to Real Python!
Ready to try Python's zipfile module?

使用Path. 您可以快速创建指向给定 ZIP 文件中特定成员文件的路径对象,并使用.open().

就像使用pathlib.Path对象一样,您可以通过调用对象来列出 ZIP 文件的.iterdir()内容zipfile.Path:

>>> import zipfile
>>> root = zipfile.Path("sample.zip")
>>> root
Path('sample.zip', '')
>>> root.is_dir()
True
>>> list(root.iterdir())
[
    Path('sample.zip', 'hello.txt'),
    Path('sample.zip', 'lorem.md'),
    Path('sample.zip', 'realpython.md')
]

很明显,它zipfile.Path提供了许多有用的功能,您可以使用这些功能几乎立即管理 ZIP 存档中的成员文件。

7.2 构建可导入的 ZIP 文件PyZipFile

另一个有用的类zipfile是PyZipFile. 此类与 非常相似ZipFile,当您需要将 Python 模块和包捆绑到 ZIP 文件中时,它特别方便。两者的主要区别ZipFile在于初始化程序PyZipFile采用一个名为 的可选参数optimize,它允许您通过在归档之前将其编译为字节码来优化 Python 代码。


PyZipFile提供与 相同的接口ZipFile,但添加了.writepy(). 此方法可以将 Python 文件 ( .py) 作为参数并将其添加到基础 ZIP 文件中。如果optimize是-1(默认值),则.py文件会自动编译为.pyc文件,然后添加到目标存档中。为什么会这样?


从 2.3 版本开始,Python 解释器支持从 ZIP 文件导入 Python 代码,这种功能称为Zip 导入。这个功能相当方便。它允许您创建可导入的 ZIP 文件,以将您的模块和包分发为单个存档。


注意:您还可以使用 ZIP 文件格式创建和分发 Python 可执行应用程序,这些应用程序通常称为 Python Zip应用程序。要了解如何创建它们,请查看Python 的 zipapp:构建可执行的 Zip 应用程序。


PyZipFile当您需要生成可导入的 ZIP 文件时非常有用。打包.pyc文件而不是.py文件使导入过程更有效,因为它跳过了编译步骤。


在python-zipfile/目录中,您有一个hello.py包含以下内容的模块:

"""Print a greeting message."""
# hello.py
def greet(name="World"):
    print(f"Hello, {name}! Welcome to Real Python!")

这段代码定义了一个名为 的函数greet(),它接受name一个参数并将问候消息打印到屏幕上。现在假设您想将此模块打包成一个 ZIP 文件以用于分发。为此,您可以运行以下代码:

>>> import zipfile
>>> with zipfile.PyZipFile("hello.zip", mode="w") as zip_module:
...     zip_module.writepy("hello.py")
...
>>> with zipfile.PyZipFile("hello.zip", mode="r") as zip_module:
...     zip_module.printdir()
...
File Name                                        Modified             Size
hello.pyc                                 2021-09-13 13:25:56          311

在此示例中,对 的调用会.writepy()自动编译hello.py并hello.pyc存储在hello.zip. 当您使用 列出档案的内容时,这一点变得很清楚.printdir()。


hello.py捆绑到 ZIP 文件后,您可以使用 Python 的导入系统从其包含的存档中导入此模块:

>>> import sys
>>> # Insert the archive into sys.path
>>> sys.path.insert(0, "/home/user/python-zipfile/hello.zip")
>>> sys.path[0]
'/home/user/python-zipfile/hello.zip'
>>> # Import and use the code
>>> import hello
>>> hello.greet("Pythonista")
Hello, Pythonista! Welcome to Real Python!

从 ZIP 文件导入代码的第一步是将该文件以sys.path. 此变量包含一个字符串列表,用于指定 Python 的模块搜索路径。要向 中添加新项目sys.path,您可以使用.insert().


要使此示例正常工作,您需要更改占位符路径并将路径传递给hello.zip您的文件系统。一旦您的可导入 ZIP 文件在此列表中,您就可以像使用常规模块一样导入代码。


最后,考虑hello/工作文件夹中的子目录。它包含一个具有以下结构的小型 Python 包:

hello/
|
├── __init__.py
└── hello.py

__init__.py模块将hello/目录转换为 Python 包。该hello.py模块与您在上面的示例中使用的模块相同。现在假设您想将此包捆绑到一个 ZIP 文件中。如果是这种情况,那么您可以执行以下操作:

>>> import zipfile
>>> with zipfile.PyZipFile("hello.zip", mode="w") as zip_pkg:
...     zip_pkg.writepy("hello")
...
>>> with zipfile.PyZipFile("hello.zip", mode="r") as zip_pkg:
...     zip_pkg.printdir()
...
File Name                                        Modified             Size
hello/__init__.pyc                        2021-09-13 13:39:30          108
hello/hello.pyc                           2021-09-13 13:39:30          317

调用.writepy()将hello包作为参数,在其中搜索.py文件,将它们编译为.pyc文件,最后将它们添加到目标 ZIP 文件中,hello.zip. 同样,您可以按照之前学习的步骤从该存档中导入您的代码:

>>> import sys
>>> sys.path.insert(0, "/home/user/python-zipfile/hello.zip")
>>> from hello import hello
>>> hello.greet("Pythonista")
Hello, Pythonista! Welcome to Real Python!

因为您的代码现在在一个包中,所以您首先需要hello从包中导入模块hello。然后你就可以greet()正常访问你的功能了。

7.3 zipfile从命令行运行

Pythonzipfile还提供了一个最小的命令行界面,允许您快速访问模块的主要功能。例如,您可以使用-lor–list选项列出现有 ZIP 文件的内容:

$ python -m zipfile --list sample.zip
File Name                                         Modified             Size
hello.txt                                  2021-09-07 19:50:10           83
lorem.md                                   2021-09-07 19:50:10         2609
realpython.md                              2021-09-07 19:50:10          428
new_hello.txt                              1980-01-01 00:00:00           13

.printdir()此命令显示与对sample.zip存档的等效调用相同的输出。

现在假设您要创建一个包含多个输入文件的新 ZIP 文件。在这种情况下,您可以使用-cor--create选项:

$ python -m zipfile --create new_sample.zip hello.txt lorem.md realpython.md
$ python -m zipfile -l new_sample.zip
File Name                                         Modified             Size
hello.txt                                  2021-09-07 19:50:10           83
lorem.md                                   2021-09-07 19:50:10         2609
realpython.md                              2021-09-07 19:50:10          428

此命令创建一个new_sample.zip包含您的hello.txt, lorem.md,realpython.md文件。


如果您需要创建一个 ZIP 文件来归档整个目录怎么办?例如,您可能拥有source_dir/与上面示例相同的三个文件。您可以使用以下命令从该目录创建 ZIP 文件:

$ python -m zipfile -c source_dir.zip source_dir/
$ python -m zipfile -l source_dir.zip
File Name                                         Modified             Size
source_dir/                                2021-08-31 08:55:58            0
source_dir/hello.txt                       2021-08-31 08:55:58           83
source_dir/lorem.md                        2021-08-31 09:01:08         2609
source_dir/realpython.md                   2021-08-31 09:31:22          428

使用此命令,zipfile将放置source_dir/在结果source_dir.zip文件的根目录中。像往常一样,您可以通过zipfile使用该-l选项运行来列出存档内容。


注意:当zipfile您从命令行创建存档时,库在存档文件时隐式使用Deflate 压缩算法。


您还可以使用命令行中的-eor--extract选项提取给定 ZIP 文件的所有内容:

$ python -m zipfile --extract sample.zip sample/

运行此命令后,您sample/的工作目录中将有一个新文件夹。新文件夹将包含存档中的当前文件sample.zip。

zipfile您可以在命令行中使用的最后一个选项是-t或–test。此选项允许您测试给定文件是否是有效的 ZIP 文件。来吧,试一试!

8. 使用其他库管理 ZIP 文件

Python 标准库中还有一些其他工具可用于在较低级别归档、压缩和解压缩文件。Python 在zipfile内部使用其中的一些,主要用于压缩目的。以下是其中一些工具的摘要:

模块 描述
zlib 允许使用zlib库进行压缩和解压缩
bz2 提供使用 Bzip2 压缩算法压缩和解压数据的接口
lzma 提供使用 LZMA 压缩算法压缩和解压缩数据的类和函数

与 不同zipfile的是,其中一些模块允许您从内存和数据流中压缩和解压缩数据,而不是常规文件和档案。


在 Python 标准库中,您还可以找到tarfile支持TAR归档格式的 . 还有一个名为 的模块gzip,它提供了一个压缩和解压缩数据的接口,类似于GNU Gzip程序的做法。


例如,您可以使用gzip创建包含一些文本的压缩文件:

>>> import gzip
>>> with gzip.open("hello.txt.gz", mode="wt") as gz_file:
...     gz_file.write("Hello, World!")
...
13

运行此代码后,您将在当前目录中拥有一个hello.txt.gz包含压缩版本的存档。hello.txt在里面hello.txt,你会发现文本Hello, World!。


在不使用的情况下创建 ZIP 文件的一种快速且高级的方法zipfile是使用shutil. 该模块允许您对文件和文件集合执行多项高级操作。当涉及到归档操作时,您make_archive()可以创建归档,例如 ZIP 或 TAR 文件:

>>> import shutil
>>> shutil.make_archive("shutil_sample", format="zip", root_dir="source_dir/")
'/home/user/sample.zip'

sample.zip此代码在您的工作目录中创建一个名为的压缩文件。此 ZIP 文件将包含输入目录中的所有文件,source_dir/. make_archive()当您需要一种快速且高级的方式在 Python 中创建 ZIP 文件时,该功能非常方便。

9. 结论

当您需要从ZIP 存档zipfile中读取、写入、压缩、解压缩和提取文件时,Python是一个方便的工具。ZIP 文件格式已成为行业标准,允许您打包和压缩您的数字数据。


使用 ZIP 文件的好处包括将相关文件归档在一起、节省磁盘空间、便于通过计算机网络传输数据、捆绑 Python 代码以进行分发等。

在本教程中,您学习了如何:


使用 Python读取、写入和提取zipfile现有的 ZIP 文件

阅读有关 ZIP 文件内容的元数据zipfile

用于操作现有 ZIP 文件中的zipfile成员文件

创建您自己的 ZIP 文件以存档和压缩您的数字数据

命令行操作zip文件

创建可导入包的zip文件

其他压缩zip格式文件的包或模块

您还学习了如何zipfile从命令行使用来列出、创建和提取 ZIP 文件。有了这些知识,您就可以使用 ZIP 文件格式有效地归档、压缩和处理您的数字数据。


参考:


zipfile — 使用ZIP存档

Create and extract (zip and unzip) a ZIP file in Python



相关文章
|
6月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
744 7
|
6月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
623 0
|
6月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
766 0
|
6月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
565 4
|
6月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
483 0
|
7月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
598 0
|
7月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
223 4
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性

推荐镜像

更多