Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 10 additions & 14 deletions Doc/library/zipfile.rst
Original file line number Diff line number Diff line change
Expand Up @@ -378,13 +378,6 @@ ZipFile Objects
given.
The archive must be open with mode ``'w'``, ``'x'`` or ``'a'``.

.. note::

There is no official file name encoding for ZIP files. If you have unicode file
names, you must convert them to byte strings in your desired encoding before
passing them to :meth:`write`. WinZip interprets all file names as encoded in
CP437, also known as DOS Latin.

.. note::

Archive names should be relative to the archive root, that is, they should not
Expand All @@ -404,7 +397,9 @@ ZipFile Objects
.. method:: ZipFile.writestr(zinfo_or_arcname, data, compress_type=None, \
compresslevel=None)

Write the string *data* to the archive; *zinfo_or_arcname* is either the file
Write a file into the archive. The contents is *data*, which may be either
a :class:`str` or a :class:`bytes` instance; if it is a :class:`str`,
it is encoded as UTF-8 first. *zinfo_or_arcname* is either the file
name it will be given in the archive, or a :class:`ZipInfo` instance. If it's
an instance, at least the filename, date, and time must be given. If it's a
name, the date and time is set to the current date and time.
Expand Down Expand Up @@ -445,11 +440,11 @@ The following data attributes are also available:

.. attribute:: ZipFile.comment

The comment text associated with the ZIP file. If assigning a comment to a
The comment associated with the ZIP file as a :class:`bytes` object.
If assigning a comment to a
:class:`ZipFile` instance created with mode ``'w'``, ``'x'`` or ``'a'``,
this should be a
string no longer than 65535 bytes. Comments longer than this will be
truncated in the written archive when :meth:`close` is called.
it should be no longer than 65535 bytes. Comments longer than this will be
truncated.


.. _pyzipfile-objects:
Expand Down Expand Up @@ -606,13 +601,14 @@ Instances have the following methods and attributes:

.. attribute:: ZipInfo.comment

Comment for the individual archive member.
Comment for the individual archive member as a :class:`bytes` object.


.. attribute:: ZipInfo.extra

Expansion field data. The `PKZIP Application Note`_ contains
some comments on the internal structure of the data contained in this string.
some comments on the internal structure of the data contained in this
:class:`bytes` object.


.. attribute:: ZipInfo.create_system
Expand Down
4 changes: 2 additions & 2 deletions Lib/zipfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ def __repr__(self):
return ''.join(result)

def FileHeader(self, zip64=None):
"""Return the per-file header as a string."""
"""Return the per-file header as a bytes object."""
dt = self.date_time
dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2]
dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2)
Expand Down Expand Up @@ -1424,7 +1424,7 @@ def comment(self, comment):
self._didModify = True

def read(self, name, pwd=None):
"""Return file bytes (as a string) for name."""
"""Return file bytes for name."""
with self.open(name, "r", pwd) as fp:
return fp.read()

Expand Down