當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。