当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python zipfile.PyZipFile.writepy用法及代码示例


用法:

writepy(pathname, basename='', filterfunc=None)

搜索文件 *.py 并将相应的文件添加到存档中。

如果 PyZipFileoptimize 参数未给出或 -1 ,则相应的文件是 *.pyc 文件,必要时进行编译。

如果 PyZipFileoptimize 参数是 012 ,则仅将具有该优化级别的文件(请参见 compile() )添加到存档中,并在必要时进行编译。

如果 pathname 是文件,则文件名必须以 .py 结尾,并且仅在顶层添加(对应的 *.pyc )文件(无路径信息)。如果 pathname 是一个不以 .py 结尾的文件,则会引发 RuntimeError。如果是目录,并且该目录不是包目录,则将所有文件*.pyc添加到顶层。如果目录是包目录,则将所有*.pyc作为文件路径添加到包名下,如果有子目录是包目录,则按顺序递归添加。

basename 仅供内部使用。

filterfunc 如果给定,则必须是采用单个字符串参数的函数。在添加到存档之前,它将通过每个路径(包括每个单独的完整文件路径)。如果 filterfunc 返回 false 值,则不会添加路径,如果是目录,则忽略其内容。例如,如果我们的测试文件都在 test 目录中或以字符串 test_ 开头,我们可以使用 filterfunc 来排除它们:

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)

writepy() 方法使用如下文件名制作档案:

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile

3.4 版中的新函数: filterfunc范围。

在 3.6.2 版中更改: pathname参数接受一个path-like 对象.

在 3.7 版中更改:递归对目录条目进行排序。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 zipfile.PyZipFile.writepy。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。